บทที่แล้วได้แนะนำคำสั่งจัดการกับหน้าโพลิกอนซึ่งสะดวกมากไปคือการดันผิวยื่นเข้าออก ในบทนี้จะแนะนำเครื่องมือที่สะดวกอีกตัว คือ polyBevel()
polyBevel() เป็นคำสั่งที่ใช้ปรับขอบของโพลิกอนให้โค้งมน
การใช้ให้กดเลือกขอบที่ต้องการ แล้วพิมพ์คำสั่ง polyBevel() หรืออาจจะระบุขอบที่ต้องการปรับเป็นอาร์กิวเมนต์ใน polyBevel() เลยก็ได้ แล้วขอบนั้นก็จะถูกหักเหลี่ยม
mc.polyCube(w=4,h=4,d=4,n='lukbat')
mc.polyBevel('.e[5]')
ขนาดของเส้นขอบที่ถูกหักนั้นจะขึ้นกับแฟล็ก o (offset) ถ้าไม่ได้ระบุก็จะมีค่าเป็น 0.2 เป็นค่าตั้งต้น
จำนวนหน้าที่ถูกเพิ่มเข้ามาที่มุมกำหนดโดยแฟล็ก sg (segments) ถ้าไม่ได้ระบุก็จะเป็น 1 คือโผล่มาแค่หน้าเดียว แต่ละหน้าที่โผล่เข้ามาจะเฉลี่ยมุมที่ถูกหักให้เท่ากัน
สามารถทำมากกว่าหนึ่งเส้นขอบพร้อมกัน เส้นขอบแต่ละอันที่อยู่ติดกันจะถูกปรับให้เข้ากัน
mc.polyPrism(ns=3,w=6,l=6,n='prismsamliam')
mc.polyBevel('.f[4]',o=0.5)
หากกดเลือกทั้งตัววัตถุโดยไม่ได้เจาะจงเส้นขอบไหน ก็จะเป็นการปรับเส้นขอบทุกเส้น
mc.polyPrism(ns=6,w=6,l=6,sc=2,sh=2,n='prismhokliam')
mc.polyBevel(o=1)
หรืออาจกดเลือกที่ผิวหน้า เป้าหมายการปรับก็จะเป็นขอบทั้งหมดที่อยู่ติดกับหน้านั้น
mc.polyCube(w=4,h=4,d=4,n='cupola')
mc.polyBevel('.f[1]',o=2,sg=12)
หรือจะกดที่มุมก็ได้เช่นกัน จะเห็นการปรับขอบที่อยู่ติดกับมุมนั้นเพื่อให้มุมนั้นโค้ง
mc.polyPyramid(ns=5,w=10,n='pyramidhaliam')
mc.polyBevel('.vtx[5]',o=0.5)
ปัญหาของการทำขอบโค้งด้วยวิธีนี้ก็คือทำให้เกิดหน้าโพลิกอนที่มีหลายเหลี่ยมขึ้น ถ้าหากนำไปปรับต่อก็อาจมีปัญหาได้ แต่ถึงอย่างนั้นก็ไม่ใช่ปัญหาใหญ่อะไรมาก
เส้นขอบจะมีความซับซ้อนแค่ไหนก็สามารถถูกปรับออกมาสวยได้ เช่นลองทำขอบของพีรามิดขั้นบันได
mc.polyCube(w=8,h=1,d=8,n='pyramidkhanbandai')
mc.select('.f[1]')
for i in range(3):
mc.polyExtrudeFacet(off=1)
mc.polyExtrudeFacet(ltz=1)
mc.polyBevel('pyramidkhanbandai',o=0.15)
แต่ก็ต้องระวังว่าถ้าปรับอ็อฟเซ็ตสูงเกินไปจนเกินกว่าขนาดของหน้าก็จะทำให้รูปทรงเสียไปเลย
สามารถใช้ร่วมกับ polyExtrudeFacet() สร้างอะไรแปลกๆออกมาได้
เช่น ลูกบิด
mc.polyCube(w=9,h=9,d=9,sx=3,sy=3,sz=3,n='lukbat')
mc.polyExtrudeFacet(kft=0,ltz=0.2)
mc.polyBevel(o=0.1)
หน้าที่เกิดจากขอบที่ถูกหักเข้านั้นจะหุบเข้าด้านในทำให้สามารถใช้ xform() เพื่อคัดกรองหน้าที่เกิดขึ้นมาใหม่ได้ง่าย ดังตัวอย่างนี้หลังจากที่หักมุมเสร็จก็ค้นหาหน้าที่เกิดขึ้นใหม่แล้วดึงยืน
mc.polyCube(w=10,h=10,d=10,n='lukbat')
mc.polyBevel(o=1,sg=2)
mc.select(cl=1)
for i in range(mc.polyEvaluate('lukbat',f=1)):
bb = mc.xform('lukbat.f[%d]'%i,q=1,bb=1)
if(abs((bb[0]+bb[3])/2)<5 and
abs((bb[1]+bb[4])/2)<5 and
abs((bb[2]+bb[5])/2)<5
): mc.select('lukbat.f[%d]'%i,add=1)
mc.polyExtrudeFacet(ltz=1)
อ้างอิง