φυβλαςのβλογ
บล็อกของ phyblas



maya python เบื้องต้น บทที่ ๒๓: การสร้างและเพิ่มโพลิกอนจากจุด
เขียนเมื่อ 2016/03/11 14:15
แก้ไขล่าสุด 2021/09/28 16:42
ในบทที่ผ่านๆมาเราสร้างโพลิกอนขึ้นมาโดยใช้ฟังก์ชันสร้างรูปทรงชนิดต่างๆ ซึ่งเป็นการสร้างรูปทรงเริ่มต้นที่ง่าย

แต่ก็มีวิธีที่จะสร้างโพลิกอนขึ้นจากการกำหนดพิกัดจุด

ฟังก์ชันที่ใช้สร้างโพลิกอนขึ้นมาทีละหน้าจากเริ่มต้นก็คือ 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]])

จะได้ระนาบโพลิกอนเรียงซ้อนๆกัน





อ้างอิง

<< บทที่แล้ว      บทถัดไป >>
หน้าสารบัญ


-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> เขียนโปรแกรม >> python >> mayapython
-- คอมพิวเตอร์ >> 3D >> maya

ไม่อนุญาตให้นำเนื้อหาของบทความไปลงที่อื่นโดยไม่ได้ขออนุญาตโดยเด็ดขาด หากต้องการนำบางส่วนไปลงสามารถทำได้โดยต้องไม่ใช่การก๊อปแปะแต่ให้เปลี่ยนคำพูดเป็นของตัวเอง หรือไม่ก็เขียนในลักษณะการยกข้อความอ้างอิง และไม่ว่ากรณีไหนก็ตาม ต้องให้เครดิตพร้อมใส่ลิงก์ของทุกบทความที่มีการใช้เนื้อหาเสมอ

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
maya
javascript
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
เรียนภาษาจีน
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
หลักการเขียนทับศัพท์ภาษาจีนกวางตุ้ง
การใช้ unix shell เบื้องต้น ใน linux และ mac
หลักการเขียนทับศัพท์ภาษาจีนกลาง
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
บันทึกการเที่ยวสวีเดน 1-12 พ.ค. 2014
แนะนำองค์การวิจัยและพัฒนาการสำรวจอวกาศญี่ปุ่น (JAXA)
เล่าประสบการณ์ค่ายอบรมวิชาการทางดาราศาสตร์โดยโซวเคนได 10 - 16 พ.ย. 2013
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
บันทึกการเที่ยวญี่ปุ่นครั้งแรกในชีวิต - ทุกอย่างเริ่มต้นที่สนามบินนานาชาติคันไซ
หลักการเขียนทับศัพท์ภาษาญี่ปุ่น
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ
ทำไมถึงอยากมาเรียนต่อนอก
เหตุผลอะไรที่ต้องใช้ภาษาวิบัติ?

ไทย

日本語

中文