φυβλαςのβλογ
phyblas的博客



maya python เบื้องต้น บทที่ ๒๕: การปรับเส้นขอบโค้งมน
เขียนเมื่อ 2016/03/11 15:16
แก้ไขล่าสุด 2021/09/28 16:42
บทที่แล้วได้แนะนำคำสั่งจัดการกับหน้าโพลิกอนซึ่งสะดวกมากไปคือการดันผิวยื่นเข้าออก ในบทนี้จะแนะนำเครื่องมือที่สะดวกอีกตัว คือ 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)





อ้างอิง

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


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

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

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

หมวดหมู่

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

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

目录

从日本来的名言
模块
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
机器学习
-- 神经网络
javascript
蒙古语
语言学
maya
概率论
与日本相关的日记
与中国相关的日记
-- 与北京相关的日记
-- 与香港相关的日记
-- 与澳门相关的日记
与台湾相关的日记
与北欧相关的日记
与其他国家相关的日记
qiita
其他日志

按类别分日志



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

  查看日志

  推荐日志

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