2015-11-30 3 views
0

Я использую three.js создать несколько объектов:Почему цвет сетки не изменяется (используя three.js)?

// it probably does not matter where geom1 or geom2 comes from 
    var materials = [ 
     new THREE.MeshLambertMaterial({ opacity: 0.2, color: 0x000000, transparent:false, side: THREE.DoubleSide }), 
     new THREE.MeshBasicMaterial({ color: 0x445555, wireframe: true }) 

    ]; 
    mesh2 = THREE.SceneUtils.createMultiMaterialObject(geom2,materials); 

    var material = new THREE.MeshBasicMaterial({color: 0xEEEEEB, transparent:false, side: THREE.DoubleSide }); 
    mesh1 = new THREE.Mesh(geom1,material); 
    mesh1.material.color.setHex(0xEEEEEB); 

Как видно из кода, который я попытался создать материалы в 2-х направлениях. Неважно, какие значения я даю цветовым параметрам, в обоих случаях цвет никогда не изменяется (он всегда серый). Если я не отрегулирую непрозрачность, тогда становится темнее или ярче. Что мне здесь не хватает?

+0

цвета 0xEEEEEB серый .. гекс красный, зеленый, синий 0xRRGGBB так 0xff0000 красный, 'mesh1 = новый THREE.Mesh (geom1, м);' - m не определено, если вы измените цвет материала после его создания, установите 'material.needsUpdate = true' –

+0

О, это m. Я забыл изменить свое название на материал. 'mesh1.material.needsUpdate = true' работал! Спасибо @Derte Trdelnik снова :). Но все же: почему даже после того, как я поставил '0x33cc33' вместо '0x000000' на мой объект MeshLamberMaterial, mesh2 все еще серый, когда я изменил цвет на '0x33cc33' в строке 'new THREE.MeshBasicMaterial ({color: 0x445555, wireframe: true})' меняется. – user435421

ответ

-1

после обновления цвета вне его декларации, вы установите параметр needsUpdate

material.needsUpdate = true; 

с момента

new THREE.MeshLambertMaterial({ color: 0x33cc33, side: THREE.DoubleSide }) 

показывает, как серый/оттенок серого вы, вероятно, не имеют никакого света в сцене, чтобы добавлена ​​одна попытка

scene.add(new THREE.AmbientLight(0xffffff)) 

или установить излучающий цвет материала LambertMaterial

new THREE.MeshLambertMaterial({color: 0x33cc33, side: THREE.DoubleSide, emissive: 0x33cc33}) 

для того, чтобы излучать цвет

+1

Странные вещи. 1) У меня есть SpotLight и AmbientLight и добавление 'emissive: 0x33cc33' в MeshLambertMaterial ничего не меняет. 2) Когда я меняю MeshLambertMaterial на BasicMeshMaterial, все работает Вы помогли мне увидеть мою ошибку и решить эту проблему. – user435421

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

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