Come posso includere informazioni sui colori dei vertici nei file .OBJ?


25

Ai file .obj che esporto mancano i dati per i colori dei vertici. C'è un modo per includere le informazioni sul colore nel file .obj? In caso contrario, quali sono le alternative?

Risposte:


9

Blender può esportare file PLY (.ply), che sono basati su testo, molto facili da analizzare e includono i colori dei vertici. Il modo più difficile è cambiare il codice esportatore OBJ in modo che includa i colori dei vertici (interrompendo così la compatibilità obj).


8
Il modo sbagliato è cambiare l'esportatore OBJ. Usa lo strumento giusto per il lavoro; se vuoi i colori dei vertici, Wavefront OBJ ovviamente non è lo strumento che vuoi usare (o abusare).
Martin Sojka,

6
Perché è un modo sbagliato? Se prende l'esportatore OBJ solo per conto suo, non riesco davvero a vedere come sia "sbagliato". Il modo sbagliato non sta facendo alcun lavoro perché è sempre il modo sbagliato per qualcuno.
Ravachol,

Il formato .obj utilizza file .mtl per la memorizzazione di informazioni sui materiali, ma per quanto ne so, supporta solo un materiale per faccia. Inoltre, .obj è uno dei non molti argomenti per i quali la voce di Wikipedia è effettivamente utile: en.wikipedia.org/wiki/Wavefront_.obj_file
Exilyth,

3
È sbagliato perché OBJ è una specifica fissa. Una volta che inizi a cambiare l'esportatore per fare cose extra , non è più un esportatore OBJ, è qualcos'altro. Da lì, potrebbe trasformarsi in qualsiasi bestia a più teste. Comunque, buona risposta, non avevo mai sentito parlare di PLY.
Ingegnere,

@NickWiggill PLY non è necessariamente una buona scelta - forse non ne hai sentito parlare per una buona ragione. È molto più complesso di OBJ e consente una maggiore flessibilità di quanto si dovrebbe ragionevolmente utilizzare per un modello statico. Se hai bisogno di maggiore flessibilità, forse dovresti usare un formato di file più popolare con parser consolidati, come COLLADA
bobobobo,

18

Esiste un sapore del * .obj di Wavefront che facilita la colorazione dei vertici. Conosco due applicazioni in grado di esportare queste, in particolare "MeshLab" (gratuito) e "MeshMixer" (anch'esse gratuite da Autodesk). I colori dei vertici si trovano effettivamente subito dopo ogni definizione di vertice come mostrato di seguito.

(Pezzo di * .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

Prova a utilizzare meshlab per generare "Occlusione ambientale basata su vertici", quindi aprilo con "MeshMixer".

Questo dovrebbe chiarire il tuo problema .. Penso che la colorazione del vertice stia tornando con l'avvento degli shader .. È divertente come la colorazione del vertice sembra essere trascurata quando sono state scoperte le mappe delle immagini .. Ora dovremmo vedere il ritorno di "Colorazione del vertice"! Fammi sapere se questo è stato utile!


Oh, capisco. Hanno aderito al colore per vertice come 3 galleggianti dopo la vspecifica della posizione del vertice. Un modo intelligente per (si spera) non interrompere la compatibilità con i parser OBJ esistenti.
Bobobobo,

+1 Ho incontrato esattamente questi vertici colorati in un file obj che ho acquisito di recente. Secondo OBJ Vertex Coloring Parsing Problem · Numero 2083 · mrdoob / three.js , i colori sono nell'ordine blu verde rosso, come è tipico, e da 0 a 1. Sei a conoscenza di qualsiasi vera documentazione per questo da uno qualsiasi dei gente che lo supporta? Che ne dite di qualsiasi codice open source che lo implementa? Esiste effettivamente uno standard scritto per obj che è ampiamente accettato?
nealmcb,

Aha - per rispondere a una delle mie domande, MeshLab non è solo gratuito, ma anche open source (GPL) e multipiattaforma :)
nealmcb

7

Wavefront OBJ supporta materiali , che raggruppano gruppi di maglie dello stesso colore.

Le dichiarazioni materiali si presentano così:

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

Quindi, Kd è il componente diffuso, Ks speculare.

Questi sarebbero specificati all'interno di un file .mtl che accompagna il file .obj. All'interno del file .obj sono presenti istruzioni come

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

Questo significa che le facce qui specificate devono usare il materiale redMtl. Quando analizzi il file obj, questo si traduce in colore per vertice.

Se ci sono molti colori diversi, avrai molti materiali diversi, ma puoi farlo.

Ecco un video su come assegnare a un determinato gruppo di volti un materiale diverso . Se lo desideri, puoi assegnare un materiale diverso a ciascuna faccia di una mesh.


5
Sfortunatamente ciò consente solo la colorazione per faccia, non la colorazione per vertice.
soffice
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.