2013-10-27 3 views
0

У меня есть модель, загруженная с помощью THREE.STLLoader.Как добавить шейдер в THREE.Object3D, загруженный из STLLoader

var loader = new THREE.STLLoader(); 
loader.addEventListener('load', function(event) { 
    var mesh = event.content; 
    scene.add(mesh); 
}); 
loader.load('model/test.stl'); 

Мне нужно применить к этой модели вершинный и фрагментарный шейдер. Как это сделать?

ответ

0

Обычный способ включить ваши шейдеры, чтобы поместить их в <script> теги:

<script id="vertexShader" type="x-shader/x-vertex"> 

    void main() { 
     ... 
    } 

</script> 

<script id="fragmentShader" type="x-shader/x-fragment"> 

    void main() { 
     ... 
    } 

</script> 

Тогда в вашей init функции:

// it's useful to have uniforms as a ~global variable, 
// so you can modify them from other functions 
// in animate() or render() for example 
var uniforms = { 
    // here, your shader's uniforms variables 
}; 

var material = new THREE.ShaderMaterial({ 
    uniforms: uniforms 
    vertexShader: document.getElementById('vertexShader').textContent, 
    fragmentShader: document.getElementById('fragmentShader').textContent 
}); 

И в вашем погрузчиком обратного вызова

var mesh = event.content; 
mesh.material = material; 

Посмотрите на этот простой пример шейдера http://threejs.org/examples/webgl_shader.html

0

Этот вопрос не содержит никаких исследований. См. Следующее: How to assign a material to ColladaLoader or OBJLoader

Только три дня. Возможно, в следующий раз попытайтесь найти хотя бы более 3 секунд. rollingEyes. И да, есть много примеров, чтобы проверить, как предложил Винсент.

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