2011年5月27日金曜日
OpenGL Mix8colors Available
OpenGL Mix8colors Available
Junkiさんのサイトで知ったのですが
This is a realtime Mix8colors with a vertex color lookup. With this realtime shader you can :
- Mix several textures.
- Paint the influence of your textures in realtime.
- Visualize several weightmaps.
- Use the vertexcolors as cluster
コレすげー・・・。
Mayaとか、リアルタイムビューに力を入れてるのですが、
SIさんは、まったく、放置プレイ中です。
いや、開発できるならしろ、って、窓口は大きく開いているのですが、
敷居が高過ぎます orz
あと、スクリプトと同じような扱いなので、非常にスピードが遅いらしいのです。
でも、リアルタイムで確認できるて重要よ。
ペイントは頂点カラーで扱ってるようです。
テクスチャに直接書く3Dペイントがあれば苦労はしないのですが。
諦めて開発してください。
7.01版を口を開けてまってます。
a kinesiology guide for riggers and animators
a kinesiology guide for riggers and animators
http://www.sod4602.com/misc/jc_kinesiology4riggers.pdf
解剖学とRigです。
人体のリグを組む上で、解剖学は避けて通れないと思います。
それを真正面から取り組んでますね〜カッコいい!
まあ、英語よくわからないので画像見るだけですが、
それでも勉強になりそうです。
ただ、背景屋はRigを組む事が無いどころか、
キャラのモデリングもしてません(w
http://www.sod4602.com/misc/jc_kinesiology4riggers.pdf
解剖学とRigです。
人体のリグを組む上で、解剖学は避けて通れないと思います。
それを真正面から取り組んでますね〜カッコいい!
まあ、英語よくわからないので画像見るだけですが、
それでも勉強になりそうです。
ただ、背景屋はRigを組む事が無いどころか、
キャラのモデリングもしてません(w
現在のビューの取得
Softimageの現在のビューの取得。
おそらくSpaceNaviGater(3DMouce)は
コレのみで取得してて、基本の4画面しか対応してないんだと思う。
フローティングパレットにも対応しやがれ。
とはいえ、面倒。
おそらくSpaceNaviGater(3DMouce)は
コレのみで取得してて、基本の4画面しか対応してないんだと思う。
フローティングパレットにも対応しやがれ。
とはいえ、面倒。
#Python app = Application log = app.Logmessage lay = app.DeskTop.ActiveLayOut vm = lay.Views("vm") #最後にアクセスのあったABCDが取れる active = vm.GetAttributeValue("viewportundermouse") view = vm.GetAttributeValue("activecamera:" + active) log( view )
2011年5月26日木曜日
座標変換 ProjectionView
パースパクティヴ座標まで変換できたのでメモ
ビューマトリクスは逆行列にしておくのがわからなかった orz
とりあえず、でけた。
ビューマトリクスは逆行列にしておくのがわからなかった orz
とりあえず、でけた。
#Python from win32com.client import constants as c import math app = Application log = app.Logmessage def main(): Application.FreezeModeling("", "", "") sel = app.Selection(0) sub = sel.SubComponent sID = sub.ComponentCollection.IndexArray obj = sub.Parent3DObject geo = obj.ActivePrimitive.Geometry pnts = geo.Points posa = pnts.PositionArray posa = [ list( posa[ 0 ] ) , list(posa[ 1 ] ) , list( posa[ 2 ] ) ] cam = app.GetValue( "Camera" ) #Matrix om = getObjMatrix(obj) vm = getViewMatrix(cam) pm = getProjectionMatrix(cam) m = om m.MulInPlace( vm ) m.MulInPlace( pm ) im = XSIMath.CreateMatrix4() im.Invert(m) #ポイント移動 for i in sID: pos = pnts(i).Position pos.MulByMatrix4InPlace(m) #ここでポイントをビュー座標で変換できる #縦(pos.y)が基本 値は -1 ~ 1 #横(pos.x)はアスペクト比*2が、画面全長 #奥行き near ~ farを 0~1であらわす pos.x # = 0 pos.y # = 0 pos.z # = 0 pos.MulByMatrix4InPlace(im) posa[0][i] = pos.x posa[1][i] = pos.y posa[2][i] = pos.z pnts.PositionArray = posa #プロジェクションマトリクス def getProjectionMatrix(inCamera): cam = inCamera #オーソグラフィックスの場合 if cam.proj.value != 1: m = XSIMath.CreateMatrix4() return m #パースパクティヴの場合 aspect = cam.aspect.value near = cam.near.value far = cam.far.value fov = cam.fov.Value # SIは横のアスペクトが基本らしい。コレを変えた場合は修正が必要 fov = XSIMath.DegreesToRadians( fov ) / aspect w = aspect * (math.cos(fov * 0.5) / math.sin(fov * 0.5)) h = 1 * (math.cos(fov * 0.5) / math.sin(fov * 0.5)) q = far / (far - near); m = XSIMath.CreateMatrix4() m.Set( w , 0 , 0 , 0 , 0 , h , 0 , 0 , 0 , 0 , q , 1 , 0 , 0 , -q * near, 0 ) return m #オブジェクトのマトリクス def getObjMatrix(inObj): obj = inObj m = XSIMath.CreateMatrix4() obj.Kinematics.Global.Transform.GetMatrix4( m ) return m #ビューマトリクス def getViewMatrix(inCamera): cam = inCamera m = XSIMath.CreateMatrix4() pos = XSIMath.CreateVector3() oTrans = cam.Kinematics.Global.Transform oTrans.GetMatrix4( m ) a = m.Get2() m.Set( a[0] , a[1] , a[2] , 0 , a[4] , a[5] , a[6] , 0 , -a[8] , -a[9] , -a[10] , 0 , a[12] , a[13] , a[14] , 1 ) m.InvertInPlace() return m main()
2011年5月25日水曜日
2011年5月23日月曜日
Mariワークショップ
先日IndyZoneさんで行われたワークショップの内容がUST見れるようです。
帰ったら見よう。元サイト
Video streaming by Ustream
メモ
- ペンタブのサイドスイッチを中クリックに
- ペイントバッファクリアは"Shift+c"のショートカットに設定
- エッジマスクのしきい値は0.03 〜
ぶっさし加減
制作メモ
直しの指示から、
電柱やフェンス等、浮いてしまわないように、
ある程度地面に埋めてたのだけど、基本NGらしい。
ライトマップ用のレンダリングを行うとき問題が発生するそうだ。
まあ、確実に無駄になる部分だから、無い方がもちろんいい。
映像用とちがって、Gameのデーターはカツカツデスな。
丁寧な制作よ、丁寧な。
もともと、大人数で制作してなかったので、
データーがちゃらんぽらんすぎるので、なおすっす。
ザ・几帳面
直しの指示から、
電柱やフェンス等、浮いてしまわないように、
ある程度地面に埋めてたのだけど、基本NGらしい。
ライトマップ用のレンダリングを行うとき問題が発生するそうだ。
まあ、確実に無駄になる部分だから、無い方がもちろんいい。
映像用とちがって、Gameのデーターはカツカツデスな。
丁寧な制作よ、丁寧な。
もともと、大人数で制作してなかったので、
データーがちゃらんぽらんすぎるので、なおすっす。
ザ・几帳面
2011年5月21日土曜日
SoftimageScript Python(list,tuple)
Pythonのシーケンス(配列?)には、リスト、タプルがあり、SIでは両方使われている。
#Softimage でポリゴンIDを取得してみる
#ちなみにSet()は、リスト、タプル、どちらでもイイみたい。
list = [0,2,3] tuple = (0,2,3)
#Softimage でポリゴンIDを取得してみる
app = Application oSel = app.Selection(0) oPolys = oSel.ActivePrimitive.Geometry.Polygons oSub = oPolys.SubComponent #ここで取得できるのはタプルのようだ。 taple = oSub.ElementArray app.Logmessage(str(taple))
#ちなみにSet()は、リスト、タプル、どちらでもイイみたい。
2011年5月20日金曜日
2011年5月19日木曜日
ブログ内にコードを貼り付ける
2011年5月11日水曜日
登録:
投稿 (Atom)