ฉันจะรวมข้อมูลสีจุดสุดยอดในไฟล์. OOBJ ได้อย่างไร


25

ไฟล์. obj ที่ฉันส่งออกไม่มีข้อมูลสำหรับสีจุดสุดยอด มีวิธีรวมข้อมูลสีในไฟล์. obj หรือไม่ ถ้าไม่ทางเลือกคืออะไร?

คำตอบ:


9

เครื่องปั่นสามารถส่งออกไฟล์ PLY (.ply) ซึ่งเป็นแบบข้อความได้ง่ายในการแยกวิเคราะห์และรวมถึงสีของจุดยอด วิธีที่ยากคือเปลี่ยนรหัสผู้ส่งออก OBJ เพื่อให้มีสีของจุดยอด


8
ผิดวิธีคือการเปลี่ยนผู้ส่งออก OBJ ใช้เครื่องมือที่เหมาะสมสำหรับงาน หากคุณต้องการสีจุดสุดยอด Wavefront OBJ ไม่ใช่เครื่องมือที่คุณต้องการใช้ (หรือใช้ในทางที่ผิด)
Martin Sojka

6
ทำไมจึงเป็นวิธีที่ผิด? หากเขาเพียงนำผู้ส่งออก OBJ มาทำเองฉันก็ล้มเหลวจริงๆที่จะเห็นว่า "ผิด" ทางที่ผิดไม่ได้ทำการทำงานใด ๆ เพราะมันเป็นเสมอทางที่ผิดกับใครบางคน
Ravachol

รูปแบบ. obj ใช้ไฟล์. mtl สำหรับจัดเก็บข้อมูลวัสดุ แต่เท่าที่ฉันรู้รองรับเพียงหนึ่งวัสดุต่อหน้า นอกจากนี้. obj เป็นหนึ่งในหัวข้อไม่มากนักซึ่งรายการ wikipedia นั้นมีประโยชน์จริง ๆ : en.wikipedia.org/wiki/Wavefront_.obj_file
Exilyth

3
มันผิดเพราะ OBJ เป็นสเปคคงที่ เมื่อคุณเริ่มเปลี่ยนผู้ส่งออกเพื่อทำสิ่งพิเศษมันไม่ได้เป็นผู้ส่งออก OBJ อีกต่อไปมันเป็นอย่างอื่น จากตรงนั้นมันจะกลายเป็นสัตว์ร้ายที่มีหัวหลายหัว ยังเป็นคำตอบที่ดีฉันไม่เคยได้ยินเรื่อง PLY
วิศวกร

@NickWiggill PLY ไม่จำเป็นต้องเป็นตัวเลือกที่ดี - บางทีคุณอาจไม่เคยได้ยินเรื่องนี้มาก่อน มันซับซ้อนกว่า OBJ มากและให้ความยืดหยุ่นมากกว่าที่จำเป็นต้องใช้สำหรับโมเดลแบบคงที่ หากคุณต้องการความยืดหยุ่นเพิ่มเติมบางทีคุณควรใช้รูปแบบไฟล์ยอดนิยมกับตัวแยกวิเคราะห์ที่ได้รับการยอมรับเช่นCOLLADA
bobobobo

18

มีรสชาติของ * .obj ของ Wavefront ที่อำนวยความสะดวกในการระบายสี Vertex .. ฉันรู้ถึงสองแอปพลิเคชันที่สามารถส่งออกสิ่งเหล่านี้คือ "MeshLab" (ฟรี) และ "MeshMixer" (ยังเป็นอิสระจาก Autodesk) .. หลังแต่ละนิยามจุดสุดยอดที่แสดงด้านล่าง ..

(ชิ้นส่วนของ * .obj)

####
#
# OBJ File Generated by Meshlab
#
####
# Object VERTEXPAINT_004_OBJ.obj
#
# Vertices: 284
# Faces: 281
#
####
mtllib ./VERTEXPAINT_004_OBJ.obj.mtl

vn 0.029683 0.730087 -0.682709
v 1220.094482 -572.500000 177.713943 0.984314 0.764706 1.000000  

# "3 vals for Vert and 3 vals for Col"

vn 0.000000 0.858139 -0.513418
v 1291.571533 -609.439636 -28.628490 0.921569 0.219608 1.000000
vn 0.303129 0.896367 -0.323480

ลองใช้ meshlab เพื่อสร้าง "Vertex Based Ambient Occlusion" จากนั้นเปิดด้วย "MeshMixer" ..

สิ่งนี้ควรอธิบายปัญหาของคุณ .. ฉันคิดว่าการระบายสี Vertex กำลังจะกลับมาพร้อมกับการปรากฎตัวของ shaders .. มันตลกดีที่การมองข้ามสีเมื่อมองจากแผนที่รูปภาพถูกค้นพบแล้วตอนนี้เราควรจะเห็นการกลับมาของ แจ้งให้เราทราบว่านี่เป็นประโยชน์หรือไม่!


อ้อเข้าใจแล้ว. พวกเขายึดติดกับสีต่อจุดยอดเป็น 3 ลอยหลังจากการvกำหนดตำแหน่งจุดสุดยอด วิธีที่ชาญฉลาดในการ (หวังว่า) จะไม่ทำลายความเข้ากันได้กับตัวแยกวิเคราะห์ OBJ ที่มีอยู่
bobobobo

+1 ฉันพบจุดยอดสีเหล่านี้ทั้งหมดในไฟล์ obj ที่ฉันเพิ่งได้รับ ตามปัญหาการแยกวิเคราะห์สี OBJ ของ Vertex ·ปัญหา # 2083 · mrdoob / three.jsสีต่าง ๆ นั้นอยู่ในลำดับสีแดงสีเขียวสีน้ำเงินสีฟ้าตามปกติและจาก 0 ถึง 1 คุณทราบถึงเอกสารจริงใด ๆ คนที่สนับสนุนมัน แล้วโอเพ่นซอร์สโค้ดใดที่นำมาใช้? จริง ๆ แล้วมีมาตรฐานเป็นลายลักษณ์อักษรสำหรับ obj ซึ่งเป็นที่ยอมรับอย่างกว้างขวาง?
nealmcb

Aha - เพื่อตอบคำถามของฉันMeshLabไม่เพียง แต่ฟรี แต่ยังเปิดแหล่งที่มา (GPL) และ cross-platform :)
nealmcb

7

Wavefront OBJ รองรับวัสดุซึ่งกลุ่มสีของตาข่ายมีสีเดียวกัน

ข้อความวัสดุมีลักษณะเช่นนี้:

newmtl redMtl
Kd 1.00 0.00 0.00
Ks 0.50 0.50 0.50
Ns 18.00

ดังนั้น Kd เป็นองค์ประกอบกระจาย Ks specular

สิ่งเหล่านี้จะถูกระบุไว้ในไฟล์. mtl ที่มาพร้อมกับไฟล์. obj ภายในไฟล์. obj จะมีข้อความเหมือน

usemtl redMtl
f 1/5/1 30/39/2 20/29/3
f 20/29/4 30/39/5 31/41/6
f 35/48/7 26/35/8 2/6/9

นี่หมายความว่าใบหน้าที่ระบุว่ามีการใช้วัสดุ redMtl เมื่อคุณแยกวิเคราะห์ไฟล์ obj สิ่งนี้จะแปลเป็นสีต่อจุดสุดยอด

หากมีหลายสีที่แตกต่างกันคุณจะมีวัสดุต่าง ๆ มากมาย แต่คุณสามารถทำได้

ที่นี่วิดีโอของวิธีการกำหนดกลุ่มโดยเฉพาะอย่างยิ่งใบหน้าวัสดุที่แตกต่างกัน คุณสามารถกำหนดวัสดุที่แตกต่างให้กับแต่ละหน้าในตาข่ายถ้าคุณต้องการ


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