ここではメタセコイアmetasequoiaで形状ドーナツ型を生成し、metalightで原点位置に配置し、カメラ位置、ライト位置を決めてPython形式を出力した。
今回作ったドーナツは相当小さいものを作ったので、半径や位置などの数字が小さくなっている。
ドーナツを拡大縮小し、45度回転させ、半径0.1の演習上に18個配置した。
#リストを準備してオブジェクト名を格納し、定義した位置をs.addObject
a=[]
deg=0
r=0.1
for i in range(18):
obj_="Obj"+str(i)
a.append(obj_)
s.materialBegin( Obj1_Mat0 )
s.transformBegin( transform().translation( vector3( r*sin(pi*deg/180.0),r*cos(pi*deg/180.0), 0 ) ) )
s.transformBegin( transform().rotationAroundZ( pi*45/180.0 ))
s.transformBegin( transform().scaling( vector3(1.2,0.8,1.0)))
a[i] = s.newObject( "mesh", [ "file" , "torus1.lfm" , 0 ] )
s.transformEnd()
s.transformEnd()
s.transformEnd()
s.materialEnd()
s.addObject( a[i] )
deg=deg+20
続いて円周上でZ中心に20度ずつ回転させていった。
a=[]
deg=0
r=0.1
for i in range(18):
obj_="Obj"+str(i)
a.append(obj_)
s.materialBegin( Obj1_Mat0 )
#s.transformBegin( transform().rotationAroundY( pi*deg/180.0 ))
s.transformBegin( transform().translation( vector3( r*sin(pi*deg/180.0),r*cos(pi*deg/180.0), 0 ) ) )
s.transformBegin( transform().rotationAroundZ( pi*-1*deg/180.0 ))
s.transformBegin( transform().scaling( vector3(1.2,0.8,1.0)))
a[i] = s.newObject( "mesh", [ "file" , "torus1.lfm" , 0 ] )
s.transformEnd()
s.transformEnd()
s.transformEnd()
#s.transformEnd()
s.materialEnd()
s.addObject( a[i] )
deg=deg+20
次にX軸中心に90度回転させた。
>
a=[]
deg=0
r=0.1
for i in range(18):
obj_="Obj"+str(i)
a.append(obj_)
s.materialBegin( Obj1_Mat0 )
#s.transformBegin( transform().rotationAroundY( pi*deg/180.0 ))
s.transformBegin( transform().translation( vector3( r*sin(pi*deg/180.0),r*cos(pi*deg/180.0), 0 ) ) )
s.transformBegin( transform().rotationAroundZ( pi*-1*deg/180.0 ))
s.transformBegin( transform().rotationAroundX( pi*90/180.0 ))
s.transformBegin( transform().scaling( vector3(1.2,0.8,1.0)))
a[i] = s.newObject( "mesh", [ "file" , "torus1.lfm" , 0 ] )
s.transformEnd()
s.transformEnd()
s.transformEnd()
s.transformEnd()
#s.transformEnd()
s.materialEnd()
s.addObject( a[i] )
deg=deg+20
以上の配置の仕方をまとめて鎖のリングを作成した。
a=[]
deg=0
r=0.1
for i in range(18):
obj_="Obj"+str(i)
a.append(obj_)
s.materialBegin( Obj1_Mat0 )
#s.transformBegin( transform().rotationAroundY( pi*deg/180.0 ))
s.transformBegin( transform().translation( vector3( r*sin(pi*deg/180.0),r*cos(pi*deg/180.0), 0 ) ) )
s.transformBegin( transform().rotationAroundZ( pi*-1*deg/180.0 ))
s.transformBegin( transform().rotationAroundX( pi*90/180.0 ))
s.transformBegin( transform().scaling( vector3(1.4,0.85,1.0)))
a[i] = s.newObject( "mesh", [ "file" , "torus1.lfm" , 0 ] )
s.transformEnd()
s.transformEnd()
s.transformEnd()
s.transformEnd()
#s.transformEnd()
s.materialEnd()
s.addObject( a[i] )
deg=deg+20
b=[]
deg2=10
for k in range(18):
obj2_="Obj2"+str(k)
b.append(obj2_)
s.materialBegin( Obj1_Mat2 )
#s.transformBegin( transform().rotationAroundY( pi*deg/180.0 ))
s.transformBegin( transform().translation( vector3( r*sin(pi*deg2/180.0),r*cos(pi*deg2/180.0), 0 ) ) )
s.transformBegin( transform().rotationAroundZ( pi*-1*deg2/180.0 ))
s.transformBegin( transform().scaling( vector3(1.6,0.85,1.0)))
b[k] = s.newObject( "mesh", [ "file" , "torus1.lfm" , 0 ] )
s.transformEnd()
s.transformEnd()
s.transformEnd()
#s.transformEnd()
s.materialEnd()
s.addObject( b[k] )
deg2=deg2+20
- -
- -