โครงร่าง OpenGL


18

ไม่ฉันไม่ต้องการ glPolygonMode ฉันกำลังค้นหาวิธีหนึ่งอาจเป็น GLSL shader ที่จะผลิตโครงลวดแบบย้อนยุคนั้นค้นหาวัตถุ ข้อเสนอแนะใด ๆ

สิ่งที่คล้ายกับ Vector Tanks มี

http://toucharcade.com/wp-content/uploads/2009/01/picture-111-300x204.png

โซลูชันควรทำงานกับ OpenGL ES 2.0 ด้วยเช่นกัน

คำแนะนำและพอยน์เตอร์ใด ๆ (ตราบใดที่ไม่ใช่ค่า NULL) ชื่นชม!

คำตอบ:


10

ลิงก์ที่น่าสนใจ:

Baerentzen และคณะ "การแสดงโครงร่างลวดผ่านครั้งเดียว" http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=4884

เอกสารทางเทคนิคของ Nividia Corporation "Solid Wireframe" http://developer.download.nvidia.com/SDK/10/direct3d/samples.html

แก้ไข: ฉันเห็นคนแรกถูกกล่าวถึงแล้วขอโทษ!


5

ฉันขอแนะนำให้ใช้พื้นผิวอย่างที่เดฟกล่าว ฉันคิดว่ามันอาจจะเป็นความเจ็บปวด แต่มันก็จะให้ประสิทธิภาพที่ดีกว่ามาก

คุณสามารถลองค้นหาอัลกอริธึมการตรวจจับขอบ หากคุณสร้างเมชของคุณโดยใช้การระบายสีจุดสุดยอดด้วยสีทึบและค่าอัลฟากลาง (เพื่อความโปร่งใสเล็กน้อย) จากนั้นใช้ส่วนตรวจจับขอบมันอาจดูดีพอ มันจะไม่เหมือนเดิม แต่คุณอาจจะชอบมากกว่านี้ หรืออาจจะไม่

มิฉะนั้นคุณอาจกำลังมองหาวิธีแก้ปัญหาสองรอบวาดรูปหลายเหลี่ยมโปร่งแสง (อีกครั้งตั้งค่าสีจุดยอดเป็นสีทึบด้วยค่าอัลฟากลาง) จากนั้นตั้งค่าglPolygonMode (GL_LINE) และปรับแต่งglLineWidthตามต้องการ ระยะทาง) และวาดรูปหลายเหลี่ยมอีกครั้ง

มันเป็นเรื่องเล็ก ๆ น้อย ๆ ตอนปลายและฉันมีช่วงเวลาที่ยากอ่านผ่านทางนี้ แต่การอภิปรายฟอรั่มชี้ไปที่รูปแบบไฟล์ PDF นี้: เดี่ยวผ่าน Wireframe การแสดงผล ฉันขอโทษถ้ามันไม่เกี่ยวข้อง


+1: มันจะง่ายกว่านี้ถ้าฉันจะหาวิธีสร้างพื้นผิว ไม่สามารถใช้ glPolygonMode เนื่องจากการกำหนดเป้าหมาย OpenGL ES ในภายหลัง (iStuff)
Kornel Kisielewicz

2

ฉันรู้ว่ามันไม่ใช่สิ่งที่คุณจะตามมา แต่ดูเหมือนว่า Vector Tanks จะใช้โมเดลพื้นผิว พื้นผิวทำให้ดูเป็นเส้นลวดมันทำงานบน iPod touch ของฉันซึ่งไม่รองรับการใช้เฉดสี


ฉันรู้ฉันรู้ แต่ฉันสามารถวางรูปภาพการโค่นล้มได้และไม่ใช้พื้นผิวเลย (AFAIK)
Kornel Kisielewicz

2

วิธีเดียวที่ฉันเห็นมันทำคือพื้นผิวที่มีความละเอียดสูงส่วนใหญ่เป็นสีดำเช่นที่อยู่ใน Tron 2.0 พื้นผิวของพวกเขาเกือบจะเป็นสากลทั้งสีดำแบนที่มีขอบหนาสีหรือพื้นผิวเสียง Perlin ง่าย

พวกเขาใช้การประมวลผลแบบง่าย ๆเพื่อให้ได้เอฟเฟกต์เรืองแสง


+1: ฉันรู้บทความ แต่ขอบคุณสำหรับการเตือน - มันเป็นบทความที่ดีแน่นอน (และช่วยแก้ไขปัญหาที่สองที่ฉันมี - เรืองแสง)
Kornel Kisielewicz

1

คุณสามารถลองใช้ฟังก์ชั่นระยะทางง่ายๆในตัวแบ่งพิกเซล บางทีบางอย่างเช่นพิกัด barycentric (เก็บ RGB ที่แตกต่างกันที่จุดยอดและผู้แรสเตอร์จะทำงานส่วนใหญ่ให้คุณ)

จากนั้น shader พิกเซลของคุณจะมีข้อมูลที่ต้องการเกี่ยวกับตำแหน่งของรูปหลายเหลี่ยมที่พิกเซลปัจจุบันอยู่ใกล้กับจุดยอดใกล้ขอบหรือตรงกลาง ...

ฉันสงสัยว่าในทางปฏิบัติแล้ว


1

วิธีการเกี่ยวกับสิ่งนี้: นำแบบจำลองของคุณและเอียงขอบที่คุณต้องการให้ปรากฏเป็นโครงร่าง ระบายสีใบหน้าที่สร้างด้วยสีเขียวทึบแสงในขณะที่ใบหน้าเก่าทั้งหมดเป็นสีเขียวโปร่งแสงมืด

สิ่งนี้ไม่จำเป็นต้องมีการใช้พิกเซลเฉดสีเลย (ในความเป็นจริงไม่มีพื้นผิวเพียงสีใบหน้า) มันต้องมีรูปแบบการประมวลผลในส่วนของคุณซึ่งอาจหรืออาจจะไม่เป็นปัญหา

คุณจะไม่สามารถเห็นโครงร่างเมื่อพื้นผิวที่เอียงเป็นแนวตั้งฉากกับมุมมอง หากสิ่งนี้รบกวนคุณคุณสามารถขับไล่พื้นผิวที่เอียงออกไปเล็กน้อยทำการระบายสีการอัดขึ้นรูปตามที่คุณจะมีมุมเอียง คุณสามารถเล่นกับ bevelling และ extrusion องศาที่แตกต่างกันเพื่อสร้างเส้นที่บางและหนาขึ้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.