2016-07-28 21 views
2

Ich versuche eine .obj zu laden, die mehrere .jpgs als Texturen hat. Meine .obj wird gerendert - aber ohne das Material anzuwenden.Wie lädt man Texturen für Obj?

Die .mtl sieht aus wie

newmtl material_0 
Ka 0.200000 0.200000 0.200000 
Kd 1.000000 1.000000 1.000000 
Ks 1.000000 1.000000 1.000000 
Tr 1.000000 
illum 2 
Ns 0.000000 
map_Kd tex_0.jpg 

ich den Pfad zu den .jpgs annehmen korrekt sind - wenn ich es ändern, ich 404-Fehler in der Konsole angezeigt.

Mein aframe Code ist:

<a-scene> 
    <a-assets> 
      <a-asset-item id="moore-obj" src="obj/moore.obj"></a-asset-item> 
      <a-asset-item id="moore-mtl" src="obj/moore.obj.mtl"></a-asset-item> 
    </a-assets> 
    <a-entity 
      obj-model="obj: #moore-obj; mtl: #moore-mtl" 
      scale="1 1 1" 
      rotation="0 0 0" 
      position="1 1 1"></a-entity> 
</a-scene> 

Das 3D-Modell in der Szene erscheint - aber es gibt keine auf sie überschichtet Texturen. Ich führe dies auf localhost aus, und ich sehe keine CORS-Warnungen.

Das Objekt ist http://www.thingiverse.com/thing:36415

+0

Das ist interessant. Alles sieht auf den ersten Blick quadratisch aus. Welche Art von lokalem Server laufen Sie? – ngokevin

+0

Python einfacher HTTP-Server. Ich frage mich, ob es etwas mit der Objektgröße zu tun hat? –

+0

Wie lautet die URL für die 404, die Sie sehen? Ich schätze, es ist nur eine Sache sicherzustellen, dass sich tex_0.jpg im richtigen Ordner befindet. Es sollte sich am selben Ort wie die MTL-Datei befinden. – brianpeiris

Antwort

2

ein Problem mit dieser speziellen OBJ-Datei zu sein, stellt sich heraus. Es verwendet drei Materialien, aber es definiert keine Objektgruppen für die Unterobjekte, die jedes dieser Materialien verwenden, sodass der OBJLoader von Three.js die Materialien nicht korrekt verknüpft.

Sie können umgehen, indem Sie Gruppenzeilen vor jeder usemtl Zeile in der Obj-Datei hinzufügen.

Zum Beispiel:

g g_0 
usemtl material_0 
... 
g g_1 
usemtl material_1 

usw.