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)

