2014年09月20日

新しくPythonのブログを作りました

http://otsukarepython.seesaa.net/
今後Pythonの事はコッチに書こうかと思います。
自宅のメインPCが壊れちゃったので、休日は超ヒマです。
【リンクの最新記事】
posted by ika at 14:07 | Comment(0) | TrackBack(0) | リンク | このブログの読者になる | 更新情報をチェックする

2014年07月22日

ワールドカップの思い出

ワールドカップの話題が出てくると思い出すんだけど、もう時効だと思うんで暴露しちゃいますが、実は日韓ワールドカップの時にとんでもない失敗をした事があるんですよ。国際信号で。
飛びスタっていうスタメンのリストを表示してフォーメーションの画にアニメーションする所を作ったんですが、ファーメーションに出す顔写真の無いチームがあったんですよ。で急遽球場へ移動するバスに乗り込む直前の選手達に写真を撮らせてもらって事なきを得たはずなんですが、多分アフリカ代表チームだと思うんですが写真を撮った本人も誰が誰だかわからなくなっちゃって、今度は写真を持って球場に行って名前を確認しに行ったんですよ。
で、大急ぎで顔写真と名前入れて放送したんですが、何故かスタメンに通訳の顔が入っていたという話。
posted by ika at 19:55 | Comment(0) | TrackBack(0) | 雑記 | このブログの読者になる | 更新情報をチェックする

2014年04月02日

[Mayaスクリプト]骨をミラーコピーするスクリプト

お久しぶりです。なんかPM2.5にウランが混じってるらしいですが私は元気です。直ちに影響はありません。
Mayaのスクリプトもだいぶ溜まってきたし、ブログのパスワードも思い出したので、これから更新間隔が短くなるよ。たぶん。

Mayaを強いられてもう2年が過ぎてしまいました。毎日Mayaが無くなればいいのにと呪いの言葉を吐いてたら呪詛返しに会いました。
Softimage 2015 の最終リリースについてのお知らせ - Autodesk

最近はモデリングでしかSI使ってないし、そのモデリングもzbrushのベースモデルだったり小道具だったりなので、正直どうでもいいかなと。今ではスキニング、リギングはMayaでやった方が早くなっちゃったし。
っていうか、XSIで作ったツールをMayaに移植してたらXSIのツールの使い方を忘れちゃっただけなんだけど。

で、とりあえず使用頻度の高い骨をミラーコピーするスクリプトです。続きを読む

2013年05月08日

[Mayaスクリプト]野良スクリプトランチャー

2m級の巨人が作ったコレのMaya版です。
Mayaを使うことを強いられ一年強。スクリプトが増えてきたので作ってみた。
本当に使えねぇよMaya、Mayaなんて無くなればいいのに。と呪いの言葉を吐いている毎日です。
いつものように「Mayaなんか使わないでsoftimage使おうぜ」とか言ってたら、新しく入った若いのが

「softimageって何ですか?」

と抜かしやがった。今までは

「softimage使ってる人を見たこと無いです」

だったのに。

続きを読む

2012年06月23日

[Mayaスクリプト]小物スクリプト

まぁアレだよ。フリーのMaya使いが作ったデータって凄い汚いよね。

半年振りの更新ですよ。納品終わってちょっと暇になったので。
「仮納品お疲れ様でした」なんていうメールが来たので油断できないけど!
もうね、MotionBuilderでアニメーションつけますよって話だったのによくわからないリグが組んであるキャラモデルが来たりしてね。
コントロールリグとバウンティングリグが同じ階層にあったり、分かれてるって思ってコントロールリグを削除したら一部のメッシュも削除されちゃったり、十分の一のサイズで寄越しやがったからGlobalScaleってノードがあったので10倍の大きさにしたらキャラが長細くなったりで、大変笑わせて頂きました。
続きを読む

2011年11月26日

【完全無料】「Visual C++ 2010 Express」でMotionBuilderプラグインを作る(64ビット対応)【MotionBuilderは別売】

ブログなんてほったらかしだし面倒くさいし辞めちゃおうかなぁとか思ってたらパスワード思い出したので再開。
ubicast Bloggerってもう開発終わっちゃったんだろうか。ブログ書くの超面倒くせぇな、やっぱり辞めよう。
続きを読む

2011年01月01日

MotionBuilder スクリプトチュートリアル FCurveの編集1

FCurveを弄る前に選択されているモデルをログに出すスクリプトから

from pyfbsdk import *
def getSelectedModels() :
sels = FBModelList()
FBGetSelectedModels(sels)
return sels
def test() :
for s in getSelectedModels() :
print s.Name
test()



FBGetSelectedModelsで選択されているモデルを取得できる。

次はアニメーションノードの取得




from pyfbsdk import *
def getSelectedModels() :
sels = FBModelList()
FBGetSelectedModels(sels)
return sels
def getAnimationNodes(node, animNodes) :
if '' != node.Name :
animNodes.append(node)
for n in node.Nodes :
getAnimationNodes(n, animNodes)

def test() :
for s in getSelectedModels() :
print s.Name
anodes = list()
getAnimationNodes(s.AnimationNode, anodes)
for an in anodes :
print (' '+an.Name)

test()



実行結果

20110101_3


アニメーションノードの正体はコイツら


20110101_1


モデルにはデフォルトでTranslation、Rotation、Scalingのアニメーションノードがついてる。アニメーションノードってのはアニメーション可能なパラメータってことみたい。


試しにVisibilityのアニメーションをONにしてさっきのスクリプトを実行すると


20110101_2


20110101_4


Visibilityが増えてる



FCurveの編集は次回

2010年12月18日

MotionBuilder スクリプトチュートリアル GUI編2

今回ボタンの使い方の例としてスクリプトランチャを作る
ボタンを押したら他のスクリプトを実行するヤツ
MBはスクリプトの実行が面倒くさいのでよく使うと思う

まずはボタンの使い方
ボタンを2つ付けて押すとそれぞれ「Script1」「Script2」とログに出すスクリプト

from pyfbsdk import *
from pyfbsdk_additions import *

class scriptLuncher() :
def __init__(self, name, w, h) :
self.tool = CreateUniqueTool(name)
self.tool.StartSizeX = w
self.tool.StartSizeY = h

x = FBAddRegionParam(0,FBAttachType.kFBAttachLeft, "")
y = FBAddRegionParam(0,FBAttachType.kFBAttachTop, "")
w = FBAddRegionParam(0,FBAttachType.kFBAttachRight, "")
h = FBAddRegionParam(0,FBAttachType.kFBAttachBottom, "")
self.tool.AddRegion('mainLayout','mainLayout', x, y, w, h)

layout = VBoxLayout()
self.tool.SetControl('mainLayout', layout)

btn = FBButton()
btn.Caption = 'Script1'
btn.OnClick.Add(self.onClick1)
layout.Add(btn, 20)

btn = FBButton()
btn.Caption = 'Script2'
btn.OnClick.Add(self.onClick2)
layout.Add(btn, 20)
def show(self) :
ShowTool(self.tool)
def onClick1(self, ctl, event) :
print 'Script1'
def onClick2(self, ctl, event) :
print 'Script2'


scriptLuncher('MBScriptLuncher', 300, 280).show()



ボタンを押すと、OnClick.Add()で指定した関数が呼ばれる

2つ作ったので2つ関数が必要になる


が、2つ3つ程度ならコレでもいいけど10個とかになってくると面倒くさいし、動的にボタンを増やすとか出来ないのでどうにかする




from pyfbsdk import *
from pyfbsdk_additions import *

class CustomButton(FBButton) :
def __init__(self, scriptPath='') :
FBButton.__init__(self)
self.scriptPath = scriptPath


class scriptLuncher() :
def __init__(self, name, w, h) :
self.tool = CreateUniqueTool(name)
self.tool.StartSizeX = w
self.tool.StartSizeY = h

x = FBAddRegionParam(0,FBAttachType.kFBAttachLeft, "")
y = FBAddRegionParam(0,FBAttachType.kFBAttachTop, "")
w = FBAddRegionParam(0,FBAttachType.kFBAttachRight, "")
h = FBAddRegionParam(0,FBAttachType.kFBAttachBottom, "")
self.tool.AddRegion('mainLayout','mainLayout', x, y, w, h)

layout = VBoxLayout()
self.tool.SetControl('mainLayout', layout)

for i in range(2) :
btn = CustomButton('Script' + str(i+1))
btn.Caption = 'Script' + str(i+1)
btn.OnClick.Add(self.onClick)
layout.Add(btn, 20)
def show(self) :
ShowTool(self.tool)
def onClick(self, ctl, event) :
print ctl.scriptPath



scriptLuncher('MBScriptLuncher', 300, 280).show()



FBButtonクラスを継承してCustomButtonクラスを作ってscriptPathってパラメータを追加した

次はコンフィグファイルを読み込んでボタンを追加していく


↓のようにキャプションとスクリプトのパスをセミコロンで区切ったリストを書いたテキストファイルを作って「MBScriptLuncher.cfg.txt」って名前で「MBのインストールフォルダ\bin\config\」に保存




Script1;Script1.py

Script2;Script2.py


・・・





from pyfbsdk import *
from pyfbsdk_additions import *
import os

class CustomButton(FBButton) :
def __init__(self, scriptPath='') :
FBButton.__init__(self)
self.scriptPath = scriptPath

class scriptLuncher() :
def __init__(self, name, w, h) :
self.cfgpath = os.path.normpath(os.path.join(FBSystem().ApplicationPath, '..\\config\\MBScriptLuncher.cfg.txt'))
self.scriptList = list()


self.tool = CreateUniqueTool(name)
self.tool.StartSizeX = w
self.tool.StartSizeY = h

x = FBAddRegionParam(0,FBAttachType.kFBAttachLeft, "")
y = FBAddRegionParam(0,FBAttachType.kFBAttachTop, "")
w = FBAddRegionParam(0,FBAttachType.kFBAttachRight, "")
h = FBAddRegionParam(0,FBAttachType.kFBAttachBottom, "")
self.tool.AddRegion('mainLayout','mainLayout', x, y, w, h)

layout = VBoxLayout()
self.tool.SetControl('mainLayout', layout)

self.getScriptList()
for sl in self.scriptList :
btn = CustomButton(sl[1])
btn.Caption = sl[0]
btn.OnClick.Add(self.onClick)
layout.Add(btn, 20)

def show(self) :
ShowTool(self.tool)
def onClick(self, ctl, event) :
FBApplication().ExecuteScript(ctl.scriptPath)
def getScriptList(self) :
if not os.path.exists(self.cfgpath) :
return
f = open(self.cfgpath, 'rt')
while 1 :
buf = f.readline()
if '' == buf :
break
if '\n' == buf :
continue
self.scriptList.append(buf.replace('\n','').split(';'))
f.close()



scriptLuncher('MBScriptLuncher', 300, 280).show()



ここまでやると結構使えると思うけど、スクリプトファイルをドロップしてボタンが追加できると便利じゃね?




from pyfbsdk import *
from pyfbsdk_additions import *
import os
import re

class CustomButton(FBButton) :
def __init__(self, scriptPath='') :
FBButton.__init__(self)
self.scriptPath = scriptPath

class scriptLuncher() :
def __init__(self, name, w, h) :
self.cfgpath = os.path.normpath(os.path.join(FBSystem().ApplicationPath, '..\\config\\MBScriptLuncher.cfg.txt'))
self.scriptList = list()

self.tool = CreateUniqueTool(name)
self.tool.StartSizeX = w
self.tool.StartSizeY = h

x = FBAddRegionParam(0,FBAttachType.kFBAttachLeft, "")
y = FBAddRegionParam(0,FBAttachType.kFBAttachTop, "")
w = FBAddRegionParam(0,FBAttachType.kFBAttachRight, "")
h = FBAddRegionParam(0,FBAttachType.kFBAttachBottom, "")
self.tool.AddRegion('mainLayout','mainLayout', x, y, w, h)

self.tool.OnShow.Add(self.onShow)

self.layout = VBoxLayout()
self.tool.SetControl('mainLayout', self.layout)

con = FBContainer()
con.OnDragAndDrop.Add(self.onDragDrop)
self.layout.Add(con, 20)


self.getScriptList()
for sl in self.scriptList :
btn = CustomButton(sl[1])
btn.Caption = sl[0]
btn.OnClick.Add(self.onClick)
self.layout.Add(btn, 20)
def show(self) :
ShowTool(self.tool)
def onClick(self, ctl, event) :
FBApplication().ExecuteScript(ctl.scriptPath)
def getScriptList(self) :
if not os.path.exists(self.cfgpath) :
return
f = open(self.cfgpath, 'rt')
while 1 :
buf = f.readline()
if '' == buf :
break
if '\n' == buf :
continue
self.scriptList.append(buf.replace('\n','').split(';'))
f.close()
def onShow(self, ctl, event) :
if False == event.Shown :
self.saveScriptList()
def saveScriptList(self) :
f = open(self.cfgpath, 'wt')
for sl in self.scriptList :
f.write('%s;%s\n'%(sl[0], sl[1]))
f.close()
def onDragDrop(self, ctl, event) :
if FBDragAndDropState.kFBDragAndDropDrop == event.State :
for c in event.Components :
path = c.LongName
if 'py' != path.split('.')[-1] :
continue
p = re.compile('Drive ([A-Z])(.*)')
m = p.match(path)
if None == m :
continue
path = m.group(1) + ':' + m.group(2)
name = path.split('\\')[-1].split('.')[0]
self.scriptList.append([name, path])
btn = CustomButton(path)
btn.Caption = name
btn.OnClick.Add(self.onClick)
self.layout.Add(btn, 20)



scriptLuncher('MBScriptLuncher', 300, 280).show()



ファイルのドロップを受け付けるコントロールが限られているのでFBContainerを使った

レイアウトにOnDragAndDropを付けてくれればいいのに


あと、折角追加したボタンがコンフィグファイルに保存されないのはアレなのでウインドウを閉じる時に保存するようにした



次回は選択されているオブジェクトを取得してFCurveをいじる

2010年12月11日

MotionBuilder スクリプトチュートリアル GUI編1

MBのスクリプトを書く機会があったのでチュートリアルっぽいのを書いてみる。
一応書く予定は
ウインドウとかボタンやリストみたいなコントロールなどGUI
選択されているオブジェクトの取得
FCurveへのアクセスと修正
Relationコンストレインの追加
Storyのトラック、クリップの取得、修正、追加
Storyのショットトラックを参照してプレイブラストを作る


今回はウインドウの表示から基本的なレイアウトまで
続きを読む
posted by ika at 15:05 | Comment(8) | TrackBack(0) | MotionBuilder | このブログの読者になる | 更新情報をチェックする

2010年08月01日

[XSI ICE] ICEで布シム

XSIには紐シムが無いのでICEで出来ねぇものかと色々調べてたら布シムが出来た。

SimulateParticlesノードを使ったもの

ベレ法で計算したもの

 

続きを読む
posted by ika at 22:30 | Comment(0) | TrackBack(0) | XSI ICE | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。