Как включить информацию о цвете вершин в файлы .OBJ?


25

В файлах .obj, которые я экспортирую, отсутствуют данные о цветах вершин. Есть ли способ включить информацию о цвете в файл .obj? Если нет, каковы альтернативы?

Ответы:


9

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


8
Неправильный путь , чтобы изменить OBJ экспортера. Используйте правильный инструмент для работы; если вы хотите цвета вершин, Wavefront OBJ, очевидно, не тот инструмент, который вы хотите использовать (или злоупотреблять).
— Мартин Сойка

6
Почему это неправильно? Если он просто использует экспортер OBJ, чтобы сделать его самому, я действительно не вижу, как это «неправильно». Неправильный путь не делает никакой работы, потому что это всегда неправильный путь к кому-то.
— Равачол

Формат .obj использует файлы .mtl для хранения информации о материале, но, насколько мне известно, поддерживает только один материал для каждого лица. Кроме того, .obj - это одна из
— немногих

3
Это неправильно, потому что OBJ является фиксированной спецификацией. Как только вы начинаете изменять экспортер для выполнения дополнительных задач , он больше не является экспортером OBJ, это что-то другое. Оттуда он может превратиться в любого многоголового зверя. Тем не менее, хороший ответ, я никогда не слышал о PLY.
— Инженер

@NickWiggill PLY - не обязательно хороший выбор - возможно, вы не слышали об этом по уважительной причине. Он намного сложнее, чем OBJ, и обеспечивает большую гибкость, чем разумно использовать для статической модели. Если вам нужна дополнительная гибкость, возможно, вам следует использовать более популярный формат файлов с хорошо известными синтаксическими анализаторами, такими как COLLADA
— bobobobo

18

Существует разновидность Wavefront * .obj, которая облегчает окрашивание вершин. Я знаю два приложения, которые могут экспортировать их, а именно «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 Colouring · Issue # 2083 · mrdoob / three.js , цвета имеют красный, зеленый, синий порядок, как обычно, и от 0 до 1. Известны ли вам какие-либо реальные документы по этому вопросу из любого из люди, поддерживающие это? Как насчет любого открытого исходного кода, который его реализует? Существует ли письменный стандарт для obj, который широко принят?
— nealmcb

Ага - чтобы ответить на один из моих вопросов, MeshLab не только бесплатен, но и с открытым исходным кодом (GPL) и кросс-платформенный :)
— 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 - зеркальный.

Они будут указаны в файле .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.