เห็นช่วงนี้กำลังมีข่าวดังเรื่องที่มีการออกแบบแลนด์มาร์กริมแม่น้ำเจ้าพระยาที่ชื่อว่าวิมานพระอินทร์ ซึ่งมีลักษณะเป็นหอคอยเวียนสวยงาม แล้วก็มีคนไปพบว่าแบบของหอคอยนี้ไปลอกมาจากโครงการหอคอย Crystal Island ที่เคยวางแผนจะสร้างที่รัสเซีย
ข่าว >>
http://www.matichon.co.th/news/282984 ภาพเปรียบเทียบ >>
https://www.facebook.com/10154510905052943 อีกทั้งแบบจำลองสามมิติของหอคอยนี้ยังสามารถโหลดได้จากเว็บได้อย่างง่ายๆด้วย โดยเป็นของโปรแกรม SketchUp
ที่โหลด >>
https://3dwarehouse.sketchup.com/model.html?id=45e488a141b7e90c17e212e05b08f33e มองดูโครงสร้างของหอคอยนี้แล้วมีความรู้สึกว่าจริงๆแล้วโครงสร้างไม่ได้ซับซ้อนอะไร สามารถเข้าใจโครงสร้างคร่าวๆได้ไม่ยาก หากคิดจะเขียนแบบสามมิติขึ้นมาจริงๆให้ใกล้เคียงแบบนี้ก็สามารถทำได้ไม่ยาก
ว่าแล้วก็เกิดความคิดอยากลองทำขึ้นมาเองดูบ้าง ก็เลยลองเขียนโค้ดภาษาไพธอนในโปรแกรมมายาเพื่อสร้างจำลองหอคอยขึ้นมาดู ก็พบว่าง่ายตามคาด ใช้เวลาทำประมาณ ๒ ชั่วโมงในการเขียนโค้ดจนสำเร็จออกมา (แต่ทำอย่างอื่นไปด้วยอยู่ ถ้าตั้งใจทำต่อเนื่องอย่างเดียวก็อาจไม่ถึงชั่วโมง)
ผลที่ได้เป็นไปตามนี้
โค้ดที่ใช้ทั้งหมดเป็นดังนี้ จำเป็นต้องลง numpy ไว้ด้วยเพื่อที่จะใช้ เพราะจะทำให้การคำนวณทำได้ง่ายขึ้นมาก
import maya.cmds as mc
import numpy as np
for i in range(12):
h = np.hstack([np.linspace(1,0,101),np.linspace(0,1,101)])
r = 1-np.sqrt(1-(1-h)**2)
mum = i*30+r*90
mum[101:] = i*30+180-r[101:]*90
x = r*np.cos(np.radians(mum))
y = r*np.sin(np.radians(mum))
chut = np.stack([x,h,y],axis=1)
sen1 = mc.curve(ep=chut)
chut[:,0] *= 0.9
chut[:,2] *= 0.9
sen2 = mc.curve(ep=chut)
mc.nurbsToPolygonsPref(f=0,pt=1,pc=150)
mc.loft(sen1,sen2,po=1,ch=0)
mc.polyExtrudeFacet(ty=0.05)
mc.delete(sen1,sen2)
สำหรับวิธีการลง numpy ในมายาดูได้ใน
https://phyblas.hinaboshi.com/20160116 และโค้ดอื่นๆที่เกี่ยวข้อง เช่น การสร้างเส้นโค้ง NURBS
https://phyblas.hinaboshi.com/maso31 การสานพื้นผิวขึ้นจากเส้นโค้ง NURBS
https://phyblas.hinaboshi.com/maso33แปลงรูปโพลิกอนอย่างอิสระด้วยการดันยื่นเข้าออก
https://phyblas.hinaboshi.com/maso24 จะเห็นว่าโค้ดเพียงแค่ไม่กี่บรรทัดเท่านี้ก็สามารถสร้างรูปสวยๆแบบนี้ขึ้นมาได้
สมการที่ใช้สำหรับเส้นโค้งของหอคอยนี้คือสมการวงกลมธรรมดา
1 = (1-r)^2+(1-h)^2
หลังจากที่ได้สร้างออกมาแล้วพอลองมองดูก็รู้สึกว่าดูแล้วโล่งไปหน่อยก็เลยลองเพิ่มเติมโดยใส่ส่วนกระจกใสที่เชื่อมระหว่างโครง โดยเขียนโค้ดตามนี้
sen = []
for i in range(24):
if(i%2==0):
h = np.linspace(0,1,101)
else:
h = np.linspace(0.02,1,101)
r = 1-np.sqrt(1-(1-h)**2)
mum = 360-i*15
x = r*np.cos(np.radians(mum))
y = r*np.sin(np.radians(mum))
chut = np.stack([x,h,y],axis=1)
sen += [mc.curve(ep=chut)]
mc.loft(sen,c=1)
mc.delete(sen)
จากนั้นก็ใส่สันสีลงไปด้วยให้สวยงาม ผลที่ได้เป็นไปตามนี้
ผลที่ได้อาจไม่เหมือนเสียทีเดียว ยังอาจต้องปรับแต่งอะไรเพิ่มเติมอีกเพื่อให้กลายเป็นอย่างในแบบในเว็บ อันนี้แค่ลองทำดูแบบง่ายๆเร็วๆไม่ได้ใส่รายละเอียดอะไร
แต่สรุปโดยคร่าวๆแล้วก็คือ คิดว่าต่อให้เขาไม่ได้โหลดแบบจำลองจากเว็บมาใช้ก็อาจไม่ยากที่จะสร้างขึ้นมาเอง
ถึงอย่างนั้นประเด็นสำคัญก็ไม่ใช่ว่าเขาโหลดของที่มีอยู่แล้วมาใช้หรือเปล่าหรอก สิ่งที่สำคัญคือเรื่องของไอเดียมากกว่า จริงอยู่เราทำหอคอยนี้ออกมาเสร็จอย่างรวดเร็ว แต่นั่นก็เพราะมีคนคิดแบบมาอยู่แล้ว หากไม่มีต้นแบบก็คงไม่สามารถทำออกมาได้
ไม่ว่าอย่างไรก็ตาม การขโมยผลงานทางความคิดของคนอื่นก็ไม่ใช่สิ่งที่ควรทำ
แถม ภาพล้อเลียนจากที่อื่นๆ รวบรวมโดยพี่ Cocon
https://web.facebook.com/10205376530452181 https://web.facebook.com/10155172494889018 https://web.facebook.com/10155172281809018 https://web.facebook.com/10154108103594888