Jak mogę dołączyć informacje o kolorze wierzchołków do plików .OBJ?

25

W eksportowanych plikach .obj brakuje danych dla kolorów wierzchołków. Czy istnieje sposób na dołączenie informacji o kolorze do pliku .obj? Jeśli nie, jakie są alternatywy?

Mina Samy
źródło

Odpowiedzi:

9

Blender może eksportować pliki PLY (.ply), które są oparte na tekście, bardzo łatwe do analizy i zawierają kolory wierzchołków. Trudnym sposobem jest zmiana kodu eksportera OBJ, tak aby zawierał kolory wierzchołków (tym samym naruszając zgodność obj).

Ravachol
źródło
8
Niewłaściwy sposób to zmienić eksportera OBJ. Użyj odpowiedniego narzędzia do pracy; jeśli chcesz kolorów wierzchołków, Wavefront OBJ oczywiście nie jest narzędziem, którego chcesz użyć (lub nadużyć).
Martin Sojka,
6
Dlaczego to zły sposób? Jeśli po prostu weźmie eksportera OBJ do własnego, naprawdę nie rozumiem, jak to jest „źle”. Zły sposób to nie wykonywanie żadnej pracy, ponieważ zawsze jest to dla kogoś niewłaściwy sposób.
Ravachol,
Format .obj używa plików .mtl do przechowywania informacji o materiale, ale o ile wiem, obsługuje tylko jeden materiał na twarz. Ponadto .obj jest jednym z
nielicznych
3
To źle, ponieważ OBJ jest stałą specyfikacją. Gdy zaczniesz zmieniać eksportera, aby robił dodatkowe rzeczy , nie jest już eksporterem OBJ, to coś innego. Stamtąd może zmienić się w niemal każdą wielogłową bestię. Dobra odpowiedź, nigdy nie słyszałem o PLY.
Inżynier
@NickWiggill PLY niekoniecznie jest dobrym wyborem - być może nie słyszałeś o tym z ważnego powodu. Jest znacznie bardziej złożony niż OBJ i pozwala na większą elastyczność, niż można by rozsądnie zastosować w przypadku modelu statycznego. Jeśli potrzebujesz dodatkowej elastyczności, być może powinieneś użyć bardziej popularnego formatu plików z dobrze
ułożonymi parserami
18

Istnieje smak Wavefront * .obj, który ułatwia kolorowanie wierzchołków. Znam dwie aplikacje, które mogą je eksportować, a mianowicie „MeshLab” (bezpłatny) i „MeshMixer” (również wolny od Autodesk) .. Kolory wierzchołków zostały faktycznie znalezione tuż po każdej definicji wierzchołka, jak pokazano poniżej ..

(Kawałek * .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

Spróbuj użyć meshlab do wygenerowania „okluzji otoczenia opartej na wierzchołku”, a następnie otwórz ją za pomocą „MeshMixer” ..

To powinno wyjaśnić twój problem. Myślę, że kolorowanie wierzchołków powraca wraz z nadejściem shaderów. To zabawne, jak kolorowanie wierzchołków wydaje się być zaniedbywane po odkryciu map obrazowych. Teraz powinniśmy zobaczyć powrót „Kolorowania wierzchołków”! Daj mi znać, czy to było przydatne!

Jacques Pretorius
źródło
Rozumiem. Są dołączona koloru na wierzchołku jak 3-pływa po tym vopisie położenie wierzchołka. Sprytny sposób (miejmy nadzieję) nie zrywania kompatybilności z istniejącymi parserami OBJ.
bobobobo
+1 Napotkałem dokładnie te kolorowe wierzchołki w niedawno uzyskanym pliku obj. Według problemu parsowania kolorowania wierzchołków OBJ · Problem nr 2083 · mrdoob / three.js , kolory są, jak zwykle, w kolejności czerwony zielony niebieski niebieski i od 0 do 1. Czy zdajesz sobie sprawę z prawdziwej dokumentacji tego z dowolnego z ludzie wspierający to? Co powiesz na kod, który go implementuje? Czy faktycznie istnieje pisemny standard dla obj, który jest powszechnie akceptowany?
nealmcb
Aha - aby odpowiedzieć na jedno z moich pytań, MeshLab jest nie tylko darmowy, ale także open source (GPL) i wieloplatformowy :)
nealmcb
7

Wavefront OBJ obsługuje materiały , których grupy kolorów oczek tego samego koloru.

Oświadczenia rzeczowe wyglądają następująco:

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

Zatem Kd jest składnikiem rozproszonym, Ks zwierciadlanym.

Zostaną one określone w pliku .mtl, który towarzyszy plikowi .obj. W pliku .obj znajdują się instrukcje podobne do

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

Oznacza to, że określone twarze mają używać materiału redMtl. Podczas analizowania pliku obj to przekłada się na kolor na wierzchołek.

Jeśli jest wiele różnych kolorów, będziesz mieć wiele różnych materiałów, ale możesz to zrobić.

Oto wideo, jak przypisać określoną grupę twarzy do innego materiału . Jeśli chcesz, możesz przypisać inny materiał do każdej powierzchni w siatce.

Bobobobo
źródło
5
Niestety pozwala to tylko na kolorowanie twarzy, a nie na wierzchołki.
puszysty