Як я можу включати інформацію про вершинні кольори у файли .OBJ?


25

У файлах .obj, які я експортую, відсутні дані для кольорів вершин. Чи є спосіб включити інформацію про кольори у файл .obj? Якщо ні, то які альтернативи?

Відповіді:


9

Blender може експортувати файли PLY (.ply), які є текстовими, дуже легко розбираються та містять кольори вершин. Важкий спосіб - змінити код експортера OBJ так, щоб він включав кольори вершин (таким чином порушуючи сумісність obj).


8
Неправильний шлях , щоб змінити OBJ експортера. Використовуйте правильний інструмент для роботи; якщо ви хочете кольори вершин, OBJ Wavefront очевидно не є інструментом, який ви хочете використовувати (або зловживати).
Мартін Сойка

6
Чому це неправильний шлях? Якщо він просто бере експортера OBJ, щоб зробити своє, я дійсно не розумію, як це "неправильно". Невірний спосіб - це не робити ніякої роботи, оскільки це завжди неправильний шлях до когось.
Равачол

Формат .obj використовує .mtl файли для зберігання інформації про матеріал, але, наскільки я знаю, підтримує лише один матеріал на обличчя. Крім того, .obj - одна з не так багато тем, для яких фактично корисна запис Вікіпедії: en.wikipedia.org/wiki/Wavefront_.obj_file
квітня 1111

3
Це неправильно, оскільки OBJ - це фіксована специфікація. Як тільки ви почнете змінювати експортера, щоб робити зайві речі , це вже не експортер OBJ, це щось інше. Звідти він міг перетворитися майже на будь-якого багатоголового звіра. Все-таки добру відповідь, я ніколи не чув про PLY.
Інженер

@NickWiggill PLY - це не обов'язково хороший вибір - можливо, ви не чули про це з поважних причин. Це набагато складніше, ніж OBJ, і він дозволяє більше гнучкості, ніж можна було б використовувати для статичної моделі. Якщо вам потрібна додаткова гнучкість, можливо, вам слід скористатися більш популярним форматом файлів із добре встановленими аналізаторами, такими як COLLADA
bobobobo

18

Існує аромат * .obj Wavefront *, який полегшує кольорові вершини. Я знаю два додатки, які можуть експортувати їх, а саме: "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 для генерації "Навколишнього оклюзії на основі вершини", а потім відкрийте його за допомогою "MeshMixer" ..

Це повинно роз'яснити вашу проблему .. Я думаю, що вершина забарвлення повертається з появою шейдерів .. Смішно, як здається, що забарвленням вершини нехтують, коли були виявлені карти зображень .. Тепер ми повинні побачити повернення «Розмальовки вершин»! Дайте мені знати, чи це було корисно!


О Я бачу. Вони нападуть на колір на вершинах як 3 поплавців після в vспецифікації позиції вершин. Розумний спосіб (сподіваємось) не порушувати сумісність із існуючими OBJ-аналізаторами.
бобобо

+1 У файлі obj я нещодавно придбав саме ці кольорові вершини. Згідно з проблемою розбору кольорів OBJ Vertex · Випуск № 2083 · mrdoob / three.js , кольори мають червоно-зелений синій порядок, як це характерно, і від 0 до 1. Чи знаєте ви будь-яку реальну документацію для цього з будь-якого з люди, які його підтримують? Як щодо будь-якого відкритого коду, який реалізує його? Чи є насправді письмовий стандарт для obj, який широко прийнятий?
nealmcb

Ага - щоб відповісти на одне із моїх запитань, MeshLab - це не лише безкоштовний, але й відкритий код (GPL) та крос-платформа :)
nealmcb

7

OBJ Wavefront підтримує матеріали , кольорові групи яких однакові за кольором.

Матеріальні заяви виглядають приблизно так:

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

Отже, Kd - дифузна складова, Ks - дзеркальна.

Вони будуть вказані у файлі .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
На жаль, це дозволяє лише фарбування на обличчя, а не за вершиною фарбування.
пухнастий
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.