2016-11-23 7 views
3

Я пытаюсь отобразить клеевые кубы, импортированные из блендера, используя Three.js.Проблема с получением цветов в импортированной сетке Blender для отображения с помощью метода Three.js

Я использую последнюю версию Three.js и Blender 2.78a.

Я начал с создания моего объекта куба, только вот так: https://www.jonathan-petitcolas.com/2015/07/27/importing-blender-modelized-mesh-in-threejs.html Но у меня разные/более склеенные кубики.

enter image description here

Я создал выше 3d объекта в Blender, затем экспортируются сетки с использованием Three.js .JS экспортера.

Адрес marmelab.json.

{ 
    "metadata":{ 
     "generator":"io_three", 
     "faces":6, 
     "type":"Geometry", 
     "version":3, 
     "materials":1, 
     "normals":6, 
     "vertices":24, 
     "uvs":1 
    }, 
    "faces":[43,8,10,12,14,0,0,1,2,3,0,0,0,0,43,16,18,20,22,0,3,0,1,2,1,1,1,1,43,9,15,19,17,0,3,0,1,2,2,2,2,2,43,1,13,21,5,0,3,0,1,2,3,3,3,3,43,3,11,23,7,0,3,0,1,2,4,4,4,4,43,2,0,4,6,0,3,0,1,2,5,5,5,5], 
    "materials":[{ 
     "DbgIndex":0, 
     "blending":"NormalBlending", 
     "opacity":1, 
     "depthWrite":true, 
     "visible":true, 
     "transparent":false, 
     "colorEmissive":[0,0,0], 
     "colorDiffuse":[0.8,0.432941,0], 
     "wireframe":false, 
     "DbgName":"01 - Default", 
     "specularCoef":11, 
     "colorSpecular":[0.18,0.18,0.18], 
     "DbgColor":15658734, 
     "depthTest":true, 
     "shading":"phong" 
    }], 
    "normals":[0,0,1,0,0,-1,0,1,-0,1,0,-0,0,-1,-0,-1,0,-0], 
    "name":"Untitled.001Geometry.1", 
    "vertices":[-0.307576,-0,-0.433258,-0.002776,-0,-0.433258,-0.307576,-0,-0.738058,-0.002776,-0,-0.738058,-0.307576,0.3048,-0.433258,-0.002776,0.3048,-0.433258,-0.307576,0.3048,-0.738058,-0.002776,0.3048,-0.738058,-0.307576,-0,-0.433258,-0.307576,-0,-0.433258,-0.307576,-0,-0.738058,-0.307576,-0,-0.738058,-0.002776,-0,-0.738058,-0.002776,-0,-0.738058,-0.002776,-0,-0.433258,-0.002776,-0,-0.433258,-0.307576,0.3048,-0.433258,-0.307576,0.3048,-0.433258,-0.002776,0.3048,-0.433258,-0.002776,0.3048,-0.433258,-0.002776,0.3048,-0.738058,-0.002776,0.3048,-0.738058,-0.307576,0.3048,-0.738058,-0.307576,0.3048,-0.738058], 
    "uvs":[[1,0,1,1,0,1,0,0]] 
} 

Javascript для загрузки сетки и дисплей

var scene, camera, renderer; 

var WIDTH = window.innerWidth; 
var HEIGHT = window.innerHeight; 

var SPEED = 0.01; 

function init() { 
    scene = new THREE.Scene(); 

    initMesh(); 
    initCamera(); 
    initLights(); 
    initRenderer(); 

    document.body.appendChild(renderer.domElement); 
} 

function initCamera() { 
    camera = new THREE.PerspectiveCamera(70, WIDTH/HEIGHT, 1, 10); 
    camera.position.set(0, 3.5, 5); 
    camera.lookAt(scene.position); 
} 


function initRenderer() { 
    renderer = new THREE.WebGLRenderer({ antialias: true }); 
    renderer.setSize(WIDTH, HEIGHT); 
} 

function initLights() { 
    var light = new THREE.AmbientLight(0xffffff); 
    scene.add(light); 
} 

var mesh = null; 
function initMesh() { 
    var loader = new THREE.JSONLoader(); 
    loader.load('./marmelab.json', function(geometry, materials) { 
     mesh = new THREE.Mesh(geometry, new THREE.MeshFaceMaterial(materials)); 
     mesh.scale.x = mesh.scale.y = mesh.scale.z = 0.75; 
     mesh.translation = THREE.GeometryUtils.center(geometry); 
     scene.add(mesh); 
    }); 
} 

function rotateMesh() { 
    if (!mesh) { 
     return; 
    } 

    mesh.rotation.x -= SPEED * 2; 
    mesh.rotation.y -= SPEED; 
    mesh.rotation.z -= SPEED * 3; 
} 

function render() { 
    requestAnimationFrame(render); 
    rotateMesh(); 
    renderer.render(scene, camera); 
} 

init(); 
render(); 

Однако в браузере форма rtained; но цвет белый.

Что мне здесь не хватает?

Большое вам спасибо.

enter image description here

+0

В какой версии Three.js вы используете? – prisoner849

+0

@ prisoner849, я использую последнюю версию r82 – Artiga

ответ

1

EDIT

Я обновил Plunker с последней версией three.js и теперь он работает с неотредактированной JSON выше - http://plnkr.co/edit/RwkgzrvfqzYlWtShhpjt?p=preview

Также успешно протестирована с моим собственным, более сложным , модель - http://plnkr.co/edit/SWXv1GyKIGryORiNYlgx?p=preview

Проблема возникает из-за использования более старой версии three.js. Первоначально я тестировал версию, предоставленную сайтом, с которым вы связались. Я подозреваю, что вы, возможно, сделали то же самое, учитывая результат.

Где-то рядом с пересмотром 70 они изменили экспортера, чтобы больше не экспортировать имущество colorAmbient, и что более старая версия Three.js потребовала его.

+0

@K Scandrett, я повсюду атрибут colorAmbient, но он не работает более чем на один куб. Для одного куба, который вы сделали, он работает отлично. установочные значения материала для «lambert» не помогли. Цветной дисплей все еще не отображается. Какой источник для правильного экспорта этого json? – Artiga

+1

Я загрузил последнюю версию Blender вчера вечером, чтобы найти ответы для вас, но каждый раз, когда я запускаю ее, он выдает Windows. Я посмотрю, смогу ли я решить эту проблему завтра и вернуться к вам. –

+0

Большое вам спасибо. Версия three.js - это r71, чтобы быть точным. :) – Artiga

 Смежные вопросы

  • Нет связанных вопросов^_^