g = [] # สร้างลิสต์เก็บชื่อชิ้นส่วน g += mc.polyCone(r=5,h=12,ch=0,n='kradong') # สร้างกระดองพร้อมเก็บชื่อเข้าลิสต์ mc.rotate(-15,0,0) mc.move(0,6,-2) g += mc.polySphere(r=5,ch=0,n='lamtua') mc.scale(1,0.3,1) g += mc.polySphere(r=0.8,ch=0,n='tasai') mc.move(2,0,4) g += mc.polySphere(r=0.8,ch=0,n='takhwa') mc.move(-2,0,4) for r in [0,10,20,30,150,160,170,180]: g += mc.polySphere(r=0.7,ch=0,n='kha1') mc.scale(3,1,1) mc.move(6,0,0) mc.rotate(0,-r,0,p=[0,0,0]) mc.group(g,n='pusechuan')
ในที่นี้ใช้ลิสต์ g เพื่อเก็บรวบรวมชื่อของส่วนประกอบแต่ละส่วนไปเรื่อยๆ โดยใช้แฟล็ก ch เพื่อลบประวัติศาสตร์ไม่ให้คืนค่าโหนดที่เก็บรูปทรงจะได้เหลือแค่โหนดหลัก (รายละเอียดดูบทที่ ๘)
จากนั้นบรรทัดสุดท้ายใช้ group() โดยใส่ลิสต์ g เป็นอาร์กิวเมนต์ เท่ากับเป็นการเอาวัตถุทั้งหมดที่มีชื่อใน g มารวมเป็นกลุ่มเดียวกัน
import math # กำหนดค่าต่างๆของแต่ละตัว ginyuu = [['ginyuu',1,0,0,1.5],['rikuumu',1.25,18,-8,2],['baata',1.5,-18,-8,2.5],['jiisu',0.75,-10,14,1],['gurudo',0.5,10,14,0.5]] # เริ่มวนซ้ำเพื่อสร้างปูแต่ละตัว for pu in ginyuu: g = [] # เตรียมลิสต์สำหรับเก็บชื่อชิ้นส่วนตัวปู g += mc.polyCone(r=5,h=12,ch=0,n='kradong') mc.rotate(-15,0,0) mc.move(0,6,-2) g += mc.polySphere(r=5,ch=0,n='lamtua') mc.scale(1,0.3,1) g += mc.polySphere(r=0.8,ch=0,n='tasai') mc.move(2,0,4) g += mc.polySphere(r=0.8,ch=0,n='takhwa') mc.move(-2,0,4) for r in [0,10,20,30,150,160,170,180]: g += mc.polySphere(r=0.7,ch=0,n='kha1') mc.scale(3,1,1) mc.move(6,0,0) mc.rotate(0,-r,0,p=[0,0,0]) mc.group(g,n=pu[0]) # นำชิ้นส่วนทั้งหมดมารวมกลุ่ม mc.scale(pu[1],pu[1],pu[1],p=[0,0,0]) # ขยายหรือย่อขนาดตามมาตราส่วนของแต่ละตัว mc.move(pu[2],0,pu[3]) # ย้ายไปประจำตำแหน่งที่ต่างกัน mc.expression(o=pu[0],s='ty=10*sin(time*2*%f/%f)'%(math.pi,pu[4])) # สร้างเอ็กซ์เพรชชันการเคลื่อนที่แต่ละตัว mc.group([r[0] for r in ginyuu],n='nuairopphiset_ginyuu') # เอาทุกตัวมารวมกลุ่มกัน mc.expression(o='nuairopphiset_ginyuu',s='tz=time*8') # สร้างเอ็กซืเพรชชันการเคลื่อนที่ไปข้างหน้าของทุกตัว