日々適当

hibitekitou

とりあえずこんなん。

xsi |2010-01-14


この頭をグリッド面にペタってくっつけたい、みたいな時に実行するスクリプトを書いてて、



とりあえずこんな感じで動作としては希望通りになっているのだけど、それはオブジェクトが親オブジェクトの影響を何も受けていない時に限りって状態の時にのみ、そうなっているんですよね。
親のトランスフォームの影響を考慮してやらねばならぬようで、むぅ、面倒。

まぁ、実用性以前のお勉強としてやっているんで、出来なくても困りはしないのだけどねー。

ちなみに元ネタは頂点を同一平面上に並べる modo202 [Zで行こう!] から。これをXSIでやるにはどうすんべか、って思ってやり始めた。
コメント ( 3 )|Trackback ( )

オブジェクト空間とワールド空間の値を相互変換の例

xsi |2010-01-14
app = Application
log = app.Logmessage

log('-----------------------------------------------------')

oObj = app.Selection(0)
oTrans = oObj.Kinematics.Local.Transform

aPos = oObj.ActivePrimitive.Geometry.Points.PositionArray

vO = XSIMath.CreateVector3()
vW = XSIMath.CreateVector3()
vO2 = XSIMath.CreateVector3()

for i in range(len(aPos[0])):
	vO.Set(aPos[0][i], aPos[1][i], aPos[2][i])
	log('Index ' + str(i) + ' Local Position:' + str(vO.X) + "," + str(vO.Y) + "," + str(vO.Z))
	vW = XSIMath.MapObjectPositionToWorldSpace(oTrans, vO) #オブジェクト空間の位置の値をワールド空間の値に変換
	log('Index ' + str(i) + ' Global Position:' + str(vW.X) + "," + str(vW.Y) + "," + str(vW.Z))
	vO2 = XSIMath.MapWorldPositionToObjectSpace(oTrans,vW) #ワールド空間の位置の値をオブジェクト空間に変換
	log('Index ' + str(i) + ' Local Position:' + str(vO2.X) + "," + str(vO2.Y) + "," + str(vO2.Z))
	log('-----------------------------------------------------')
コメント ( 0 )|Trackback ( )

Core i5 な MacBook Pro が近日に登場?

mac |2010-01-14
IntelがCore i5搭載MacBook Proの登場が近いことをリーク?! [気になる、記になる…]

Intel が発表したCPUってのはGPUも内蔵しちゃったClarkdaleとArrandaleと呼ばれている32nmプロセスのもんでしたっけ(アーキテクチャ名としてはWestmereと言うらしい)。

米Intel、Westmere世代32nm製造の「Core i7」「Core i5」「Core i3」発表 [マイコミジャーナル]

いずれにしても2コアであり、4コアはやっぱり夢になりましょうか。
一応、720,820,920のQMっていうCore i7のモバイル向け4コアは存在するんですけどね。ベースクロックは1.6から2.0GHzとちょい低め。ただTurbo Boost時は最大2.8から3.2GHzになるわけで、熱の問題さえどうにかなるなら、これ積んだモデルもでて欲しいところです。

ともあれ、近々でるらしいMacBook Pro。
タブレットタイプの何かの発表が噂されている現在。それとぶつけてMacBook Proを発表することはないでしょうけど、こっそりアップグレードでもいいから、早くその姿をみたいもののです。
コメント ( 0 )|Trackback ( )

ポイントの位置を並べ替えるサンプル(PositionArrary)

xsi |2010-01-14
選択しているポリゴンオブジェクトのポイントを円形に並べ替えてしまう。ポイントの並び順は考慮しない。
import math

app = Application
log = app.Logmessage

oObj = app.Selection(0)

aPos = oObj.ActivePrimitive.Geometry.Points.PositionArray

newAPos = [[],[],[]]

baseValue = 360.0/len(aPos[0])
for i in range(len(aPos[0])):
	newAPos[0].append(math.cos(XSIMath.DegreesToRadians(baseValue * i)))
	newAPos[1].append(math.sin(XSIMath.DegreesToRadians(baseValue * i)))
	newAPos[2].append(0.0)

oObj.ActivePrimitive.Geometry.Points.PositionArray = newAPos
コメント ( 0 )|Trackback ( )
  ・