สารบัญ:
วีดีโอ: โปรแกรมดู 3 มิติ: 4 ขั้นตอน
2024 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2024-01-30 13:07
สวัสดี! เพื่อตอบสนองความสนใจของฉันในการเขียนโปรแกรมและหวังว่าจะช่วยให้คุณพึงพอใจ ฉันต้องการแสดง 3D Viewer ที่ฉันเขียนโค้ดในจาวาสคริปต์ หากคุณต้องการทำความเข้าใจเกม 3D ให้มากขึ้น หรือแม้แต่สร้างเกม 3D ของคุณเอง โปรแกรมดู 3D ต้นแบบนี้เหมาะสำหรับคุณ
ขั้นตอนที่ 1: ทฤษฎี
เพื่อให้เข้าใจทฤษฎีของมุมมอง 3 มิตินี้ คุณสามารถตรวจสอบวิธีที่คุณมองสภาพแวดล้อมของคุณ (จะช่วยให้มีแหล่งกำเนิดแสงที่สำคัญเพียงแหล่งเดียว) สังเกตว่า:
- วัตถุที่อยู่ไกลจากคุณจะมีขอบเขตการมองเห็นเพียงเล็กน้อย
- วัตถุที่อยู่ไกลจากแหล่งกำเนิดแสงจะมีสีเข้มขึ้น
- เมื่อพื้นผิวขนานกันมากขึ้น (ตั้งฉากน้อยลง) กับแหล่งกำเนิดแสง สีก็จะดูเข้มขึ้น
ฉันตัดสินใจที่จะแสดงขอบเขตการมองเห็นด้วยเส้นหลายเส้นที่เกิดจากจุดเดียว (คล้ายกับลูกตา) เช่นเดียวกับลูกบอลแหลม เส้นจะต้องเว้นระยะห่างเท่าๆ กันเพื่อให้แน่ใจว่าแต่ละส่วนของช่องการมองเห็นนั้นแสดงอย่างเท่าเทียมกัน ในภาพด้านบน สังเกตว่าเส้นที่มาจากลูกเดือยจะมีระยะห่างมากขึ้นเมื่อเคลื่อนออกจากจุดศูนย์กลางของลูกบอลมากขึ้น ซึ่งจะช่วยให้เห็นภาพการใช้งานโปรแกรมการสังเกต 1 เนื่องจากความหนาแน่นของเส้นลดลงเมื่อวัตถุเคลื่อนห่างจากจุดศูนย์กลางมากขึ้น
เส้นเป็นหน่วยพื้นฐานของการมองเห็นในโปรแกรม และแต่ละเส้นจะถูกจับคู่กับพิกเซลบนจอแสดงผล เมื่อเส้นตัดกับวัตถุ พิกเซลที่เกี่ยวข้องจะถูกระบายสีตามระยะห่างจากแหล่งกำเนิดแสงและมุมจากแหล่งกำเนิดแสง
ขั้นตอนที่ 2: ทฤษฎีการปฏิบัติ
เพื่อให้โปรแกรมง่ายขึ้น แหล่งกำเนิดแสงจะเหมือนกับจุดศูนย์กลาง (ลูกตา: จุดที่ดูแผนที่และตำแหน่งของเส้น) คล้ายกับการถือแสงไว้ข้างๆ ใบหน้าของคุณ ซึ่งจะช่วยขจัดเงาและช่วยให้คำนวณความสว่างของแต่ละพิกเซลได้ง่ายขึ้นมาก
โปรแกรมยังใช้พิกัดทรงกลม โดยมีจุดศูนย์กลางการมองเห็นที่จุดกำเนิด ซึ่งช่วยให้สร้างเส้นได้ง่าย (แต่ละเส้นมี theta ที่ไม่ซ้ำกัน: มุมแนวนอนและ phi: มุมแนวตั้ง) และเป็นพื้นฐานในการคำนวณ เส้นที่มีทีต้าเดียวกันจะถูกจับคู่กับพิกเซลในแถวเดียวกัน ค่า phis ของมุมที่สอดคล้องกันจะเพิ่มขึ้นในแต่ละแถวของพิกเซล
เพื่อทำให้คณิตศาสตร์ง่ายขึ้น แผนที่ 3 มิติจะประกอบด้วยระนาบที่มีตัวแปรร่วม (x, y หรือ z ทั่วไป) ในขณะที่ตัวแปรที่ไม่ธรรมดาอีกสองตัวจะถูกจำกัดอยู่ภายในช่วง ทำให้คำจำกัดความของแต่ละระนาบสมบูรณ์
ในการมองไปรอบๆ ด้วยเมาส์ สมการของโปรแกรมจะพิจารณาการหมุนในแนวตั้งและแนวนอนระหว่างการแปลงระหว่างระบบพิกัดทรงกลมและระบบพิกัด xyz สิ่งนี้มีผลในการปรับรูปแบบการหมุนล่วงหน้าบนชุดเส้นเล็ง "ลูกสไปค์บอล"
ขั้นตอนที่ 3: คณิตศาสตร์
สมการต่อไปนี้ช่วยให้โปรแกรมสามารถกำหนดได้ว่าเส้นใดตัดกันแต่ละวัตถุและข้อมูลเกี่ยวกับแต่ละจุดตัด ฉันได้สมการเหล่านี้จากสมการพิกัดทรงกลมพื้นฐานและสมการการหมุน 2 มิติ:
r=ระยะทาง t=theta(มุมแนวนอน), p=phi(มุมแนวตั้ง), A=การหมุนรอบแกน Y(การหมุนในแนวตั้ง), B=การหมุนรอบแกน Z(การหมุนในแนวนอน)
Kx=(บาป(p)*cos(t)*cos(A)+cos(p)*บาป(A))*cos(B)-บาป(p)*บาป(t)*บาป(B)
Ky=(บาป(p)*cos(t)*cos(A)+cos(p)*บาป(A))*บาป(B)+บาป(p)*บาป(t)*cos(B)
Kz=-sin(p)*cos(t)*sin(A)+cos(p)*cos(A)
x=r*Kx
y=r*Ky
z=r*Kz
r^2=x^2+y^2+z^2
แสง=Klight/r*(Kx หรือ Ky หรือ Kz)
p=arccos((x*sin(A)*cos(B)+y*sin(A)*sin(B)+z*cos(A))/r)
t=arccos((x*cos(B)+y*sin(B)-p*sin(A)*cos(p))/(r*cos(A)*sin(p)))
ขั้นตอนที่ 4: โปรแกรม
ฉันหวังว่าโปรแกรมดู 3 มิติต้นแบบนี้จะช่วยให้คุณเข้าใจการทำงานของ 3 มิติเสมือนจริง ผู้ชมรายนี้มีศักยภาพที่จะนำไปใช้ในการพัฒนาเกม 3D ได้อย่างแน่นอน ด้วยการทำให้สมบูรณ์และเขียนโค้ดได้มากขึ้น
แนะนำ:
มอเตอร์ไร้แปรงถ่านแบบ 3 มิติ: 7 ขั้นตอน (พร้อมรูปภาพ)
มอเตอร์ไร้แปรงถ่านแบบพิมพ์ 3 มิติ: ฉันออกแบบมอเตอร์นี้โดยใช้ Fusion 360 สำหรับการสาธิตในหัวข้อของมอเตอร์ ดังนั้นฉันจึงต้องการสร้างมอเตอร์ที่รวดเร็วและสอดคล้องกัน แสดงให้เห็นอย่างชัดเจนถึงส่วนต่างๆ ของมอเตอร์ จึงสามารถใช้เป็นแบบจำลองหลักการทำงานพื้นฐานที่แสดงอยู่ใน
เครื่องวัดเกลียวแบบพิมพ์ 3 มิติ: 6 ขั้นตอน (พร้อมรูปภาพ)
สไปโรมิเตอร์แบบพิมพ์ 3 มิติ: สไปโรมิเตอร์เป็นเครื่องมือคลาสสิกในการแยกวิเคราะห์อากาศขณะที่เป่าออกจากปากของคุณ ประกอบด้วยท่อที่คุณเป่าเข้าไปเพื่อบันทึกปริมาตรและความเร็วของลมหายใจหนึ่งครั้ง จากนั้นนำไปเปรียบเทียบกับชุดค่าปกติฐาน
วิธีพิมพ์หุ่นยนต์ 3 มิติ: 4 ขั้นตอน
วิธีพิมพ์หุ่นยนต์ 3 มิติ: วันนี้ฉันจะแสดงให้คุณเห็นถึงวิธีการเปลี่ยนจากภาพสเก็ตช์ที่ทำในไม่กี่นาทีให้เป็นหุ่นยนต์มืออาชีพที่ดูดีพร้อมพิมพ์
กระดานเกลียว (เวอร์ชันที่ไม่มีการพิมพ์ 3 มิติ): E-Textile Rapid Prototyping Board: 4 ขั้นตอน (พร้อมรูปภาพ)
ThreadBoard (Non-3D-Printed Version): E-Textile Rapid Prototyping Board: สามารถดูคำแนะนำสำหรับ ThreadBoard V2 เวอร์ชันที่พิมพ์ 3 มิติ ได้ที่นี่ ThreadBoard เวอร์ชัน 1 สามารถพบได้ที่นี่ ผ่านอุปสรรคด้านราคา การเดินทาง การแพร่ระบาด และอุปสรรคอื่นๆ คุณอาจไม่สามารถเข้าถึงเครื่องพิมพ์ 3 มิติ แต่ต้องการค
หุ่นยนต์ Quadruped ขับเคลื่อนด้วย Arduino ที่พิมพ์ 3 มิติ: 13 ขั้นตอน (พร้อมรูปภาพ)
หุ่นยนต์ Quadruped ที่ขับเคลื่อนด้วย Arduino แบบพิมพ์ 3 มิติ: จาก Instructables ก่อนหน้านี้ คุณอาจเห็นว่าฉันมีความสนใจอย่างมากสำหรับโครงการหุ่นยนต์ หลังจากคำสั่งสอนก่อนหน้านี้ที่ฉันสร้างหุ่นยนต์สองเท้า ฉันตัดสินใจลองทำหุ่นยนต์สี่ขาที่สามารถเลียนแบบสัตว์เช่นสุนัข