2017-02-16 25 views
0

Я использую Ламберт шейдеров и в exaple он устанавливает материал, как это:Непрозрачность материала в three.js

this.material.uniforms.emissive.value = new THREE.Color(
    Math.random(), 
    Math.random(), 
    Math.random()); 

Прежде, чем я был простой шейдер, который установлен материал как это, где я мог контролировать alpha:

this.material.uniforms.color.value = new THREE.Vector4(
    Math.random(), 
    Math.random(), 
    Math.random(), 
    0.3) 

Но похоже, что у ламберт-шейдера нет цветового вектора4.

Любая идея о том, как управлять альфой?

Я использую тот же пример для затенения Ламберта здесь: https://forge.autodesk.com/blog/forge-viewer-custom-shaders-part-2

И простой шейдер был из: http://adndevblog.typepad.com/cloud_and_mobile/2017/01/forge-viewer-custom-shaders-part-1.html

ответ

4

вам придется использовать material непрозрачности. обязательно пометить его как прозрачный первый:

this.material.uniforms.transparent = true; 

затем установите непрозрачность:

this.material.uniforms.opacity = 0.3; 

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

this.material.uniforms.needsUpdate = true; 

для текстуры использовать .alphaMap

+0

Это просто полностью исчезает сейчас ... – shinzou

+0

Любые идеи, почему ? '' – shinzou

+1

Я думаю, что Филипп, автор 2-х блогов, о которых вы говорили ранее, может получить лучший ответ. Но просто дайте знать, есть известная проблема с Forge Viewer. При открытии SVF-файла будет учитываться прозрачность различных фрагментов, чтобы обеспечить получение полупрозрачных объектов после непрозрачных. Однако при изменении материала фрагмента «на лету» заказ не обновляется, потому что зритель не имеет возможности перестраивать BVH по запросу, и вы можете получить что-то неожиданное (непрозрачные объекты, скрытые прозрачным объекты) –

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

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