ในบทที่ผ่านๆมาเราสร้างโพลิกอนขึ้นมาโดยใช้ฟังก์ชันสร้างรูปทรงชนิดต่างๆ ซึ่งเป็นการสร้างรูปทรงเริ่มต้นที่ง่าย
แต่ก็มีวิธีที่จะสร้างโพลิกอนขึ้นจากการกำหนดพิกัดจุด
ฟังก์ชันที่ใช้สร้างโพลิกอนขึ้นมาทีละหน้าจากเริ่มต้นก็คือ polyCreateFacet()
การสร้างให้ใส่ลิสต์ที่บรรจุลิสต์หรือทูเพิลของพิกัดของจุดยอดแต่ละจุดของหน้าโพลิกอนที่ต้องการสร้างลงในแฟล็ก p (point) ซึ่งอาจมีกี่อันก็ได้ ตั้งแต่ ๓ ขึ้นไป เช่น
mc.polyCreateFacet(p=[[0,0,0],[10,0,0],[10,10,0],[0,10,0]])
ในการสร้างหน้าโพลิกอนด้วยฟังก์ชันนี้สามารถเจาะรูลงไปได้ด้วย โดยการเติมลิสต์หรือทูเพิลว่าง () หรือ [] ลงไป จากนั้นก็ต่อด้วยพิกัดของรูที่ต้องการ
mc.polyCreateFacet(p=[[0,0,0],[10,0,0],[10,10,0],[0,10,0],[],[2,2,0],[8,2,0],[8,8,0],[2,8,0]])
อาจมีรูหลายอันก็ได้ จะมีกี่กันก็แค่ใส่ [] คั่นไปทีละอัน
p = [[0,0,0],[10,0,0],[10,10,0],[0,10,0]]
ru1 = [[1,1,0],[4.5,1,0],[4.5,4.5,0],[1,4.5,0]]
ru2 = [[ru1[i][0],10-ru1[i][1],0] for i in range(4)]
ru3 = [[10-ru1[i][0],10-ru1[i][1],0] for i in range(4)]
ru4 = [[10-ru1[i][0],ru1[i][1],0] for i in range(4)]
mc.polyCreateFacet(p=p+[[]]+ru1+[[]]+ru2+[[]]+ru3+[[]]+ru4)
ในการสร้างโพลิกอนด้วยวิธีนี้ก็เช่นเดียวกับการสร้างโดยใช้คำสั่งสร้างรูปทรง จะมีโหนดที่เก็บประวัติศาสตร์ถูกสร้างขึ้นมาด้วย
ลองดูที่แอตทริบิวต์อีดิเตอร์จะเห็นโหนดชื่อ polyCreateFace1 กดเข้าไปดูจะเห็นแสดงตำแหน่งพิกัดของจุดแต่ละจุดที่ใส่เข้าไปตอนสร้าง รวมทั้งจุดที่เป็นรูด้วย ซึ่งก็สามารถปรับแต่งค่าได้
หากตอนที่สร้างใส่แฟล็ก ch (constructionHistory) ลงไปเป็น ch=0 ให้ไม่เก็บประวัติศาสตร์โหนดตรงนี้ก็จะไม่ปรากฏ
หากต้องการเพิ่มหน้าโพลิกอนใหักับโพลิกอนที่มีอยู่แล้วก็ทำได้โดยฟังก์ชัน polyAppend()
ฟังก์ชันนี้จะเพิ่มโพลิกอนให้กับวัตถุที่ถูกเลือกอยู่โดยให้ติดกับเส้นขอบที่มีอยู่ เดิม โดยใส่หมายเลขของเส้นขอบเส้นหนึ่งของโพลิกอน ตามด้วยพิกัดของจุดยอดของโพลิกอนที่ต้องการเพิ่ม หรืออาจใส่เป็นหมายเลขเส้นขอบทั้งหมดเลยก็ได้ ทั้งหมดนี้ใส่ในแฟล็ก a (append)
เช่นตัวอย่างนี้ สร้างหน้าโพลิกอนขึ้นมา จากนั้นก็เพิ่มโพลิกอนขึ้นมา โดยครั้งแรกเพิ่มจากด้านหนึ่งแล้วใส่พิกัดจุดใหม่ จากนั้นก็เพิ่มอีกด้านหนึ่งโดยใช้หมายเลขของเส้นขอบสองเส้น
mc.polyCreateFacet(p=[[0,0,0],[0,0,10],[10,0,10],[10,0,0]])
mc.polyAppend(a=[3,[0,10,0]])
mc.polyAppend(a=[0,5])
มีอีกฟังก์ชันที่ใช้เพิ่มโพลิกอน คือ polyAppendVertex()
ฟังก์ชันนี้ก็คล้ายกับ polyAppend แต่ว่าแทนที่จะต่อกับเส้นขอบที่มีอยู่เดิมก็เป็นต่อกับจุดยอดแทน เช่น
mc.polyCreateFacet(p=[[0,0,0],[0,0,10],[10,0,10],[10,0,0]])
mc.polyAppendVertex(a=[0,[0,0,-10],[-10,0,-10],[-10,0,0]])
นอกจากนี้อาจใช้สร้างโพลิกอนขึ้นใหม่โดยไม่ต้องต่อกับของเดิมเลยก็ได้ โดยใส่เป็นพิกัดของจุด เช่น
mc.polyCreateFacet(p=[[0,0,0],[0,0,10],[10,0,10],[10,0,0]])
for i in range(2,11,2):
mc.polyAppendVertex(a=[[0,i,0],[0,i,10],[10,i,10],[10,i,0]])
จะได้ระนาบโพลิกอนเรียงซ้อนๆกัน
อ้างอิง