2013-04-03 10 views
0

Salut, j'ai essayé déjà différentes pour ajouter de la matière codes sources à une géométrie mais si j'ajouter un code comme ceci:Three.js - Ajouter Matériel à OBJ Loader (WebGL)

var material1 = new THREE.MeshBasicMaterial({ color: 0x00ff00, wireframe: true }); 

je n'obtenir ombrage/matériel à mon obj (modèle). c'est comme une vue à plat. Exemple: http://dev.interactive-creation-works.net/Three/viewer.html

// This string has to be the path to your texture file. 
loader.load('0.jpg'); 

/*** OBJ Loading ***/ 
var loader = new THREE.OBJLoader(); 

// As soon as the OBJ has been loaded this function looks for a mesh 
// inside the data and applies the texture to it. 
loader.addEventListener('load', function (event) { 
var object = event.content; 
object.traverse(function (child) { 
    if (child instanceof THREE.Mesh) { 
    child.material.map = texture; 
    } 
}); 

// object = new THREE.Mesh(geometry, [ new THREE.MeshFaceMaterial(), new THREE.MeshPhongMaterial({ color: 0xff4400, wireframe: true, wireframeLinewidth: 2 }) ]); 
object = new THREE.Mesh(geometry); 

// My initial model was too small, so I scaled it upwards. 
object.scale = new THREE.Vector3(25, 25, 25); 

// You can change the position of the object, so that it is not 
// centered in the view and leaves some space for overlay text. 
object.position.y -= 2.5; 
scene.add(object); 

}); 

// This string has to be the path to your object file. 
loader.load('0.obj'); 

// We set the renderer to the size of the window and 
// append a canvas to our HTML page. 
renderer = new THREE.WebGLRenderer(); 
renderer.setSize(window.innerWidth, window.innerHeight); 
container.appendChild(renderer.domElement); 

Tout le monde peut éventuellement me aider?

Répondre

2

Votre modèle possède-t-il des coeurs UV? Le code dans cette question object importing in Three.js fait exactement la même chose.

+0

Salut gaitat, Oui, il a des coeurs UV et la texture fonctionne. vous pouvez le voir la tête est rouge et les cornes sont comme le jaune. –

+0

Vous n'avez pas de lumière dans la scène. Juste une ambiance. Le directionnel est commenté. – gaitat

+0

Merci, Le direct. la lumière rend un peu mieux.F5 Mais encore différent de Zbrush Voir: http://dev.interactive-creation-works.net/Three/character.png Vous savez éventuellement un simple échantillon de code d'un chargement d'obj et attacher un .mtl ou des tapis standard comme phong, basique, lambert? Et vous savez comment je peux voter pour votre aide? –

1

Utilisez MeshPhongMaterial (ou Lambert) sans l'attribut fil de fer pour obtenir un matériau qui fonctionne bien avec les lumières (ombrées). Par exemple.

var material1 = new THREE.MeshPhongMaterial({ color: 0x00ff00 }); 

MeshBasicMaterial est toujours plat.

De même, vous ne remplacez que la texture (carte) et non la matière dans la fonction de rappel/déplacement de charge. Vous devez affecter le matériau à l'objet, si vous remplacez uniquement la carte, le type de matériau sera celui que le chargeur .obj a créé.

Questions connexes