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

現在のビューの取得

Softimageの現在のビューの取得。
おそらく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
とりあえず、でけた。

#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日水曜日

ビュー座標変換メモ

座標変換がなかなか上手く行かない

オブジェクトローカル
>ワールド
>ビュー
>パースペクティブ
>スクリーン

の順番にマトリックスをかけていく。
このうち、平行投影までで良いので,必要なのはビュー座標までか

これで、ビュー座標上でポイントをそろえる、一番左下を確定する、
UVのプロジェクションも可能かな。



UVIslandでまだ悩んでる orz

2011年5月23日月曜日

「劇場版マクロスF 〜サヨナラノツバサ〜」 株式会社サテライト

AutoDeskのユーザー事例

Softimageも使われているみたい


リジットボディ
・Bullet Physics プラグインMomentum $149

Mariワークショップ

先日IndyZoneさんで行われたワークショップの内容がUST見れるようです。
帰ったら見よう。
元サイト

 

 

 

 

 



Video streaming by Ustream
メモ
  • ペンタブのサイドスイッチを中クリックに
  • ペイントバッファクリアは"Shift+c"のショートカットに設定
  • エッジマスクのしきい値は0.03 〜

ぶっさし加減

制作メモ
直しの指示から、
電柱やフェンス等、浮いてしまわないように、
ある程度地面に埋めてたのだけど、基本NGらしい。
ライトマップ用のレンダリングを行うとき問題が発生するそうだ。
まあ、確実に無駄になる部分だから、無い方がもちろんいい。

映像用とちがって、Gameのデーターはカツカツデスな。
丁寧な制作よ、丁寧な。

もともと、大人数で制作してなかったので、
データーがちゃらんぽらんすぎるので、なおすっす。
ザ・几帳面

2011年5月21日土曜日

ポータルサイトオープン




現在出来たばかりで情報がすくないですが、
公式サイトがオープンしました。

こちらで背景をやっております。

みんなサイバー好き過ぎです。

楽しく苦しく作ってマース。

SoftimageScript Python(list,tuple)

Pythonのシーケンス(配列?)には、リスト、タプルがあり、SIでは両方使われている。

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日金曜日

123D

123D
AutoDeskのフリーモデリングツール DLDL



どうやら、完全にCADツールのようです。
 メッシュが書き出せるか検討しないとだめですね〜。

2011年5月19日木曜日

ブログ内にコードを貼り付ける

// Comment
#Python
app = Application

このようなコードを貼り付けているサイトを見かけます。
コードを貼り付けることが多くなったので、導入してみました。

といっても、標準でコードを埋め込めるわけではなかったので、手順を記載しておきます。

・Syntax Highlighter
 というようです。




参考サイト


Chrome、IEでの、自動登録は出来なかったので、

こちらの手動での登録となりました。


こちらのサイトのコードを
テンプレートに、こぴぺしただけです。

便利な世の中になったもんだ。

追記
ここも参考になるサイト

2011年5月11日水曜日

ブログ移行テスト

ブログを移行してみようと思います。
 XoopsCubeとかも試してみたのですがめんどくさかったので、
とりあえずこちらに。
一月ほど試してみます。