Pracuję nad utworzeniem modułu cieniującego do generowania terenu za pomocą cieni.Trzy js - Klonowanie modułu cieniującego i zmiana wartości jednolitych
Moim początkiem jest sklonowanie modułu cieniującego Lamberta i użycie ShaderMaterial w celu ostatecznego dostosowania go za pomocą własnego skryptu.
Standardowa metoda działa dobrze:
var material = new MeshLambertMaterial({map:THREE.ImageUtils.loadTexture('images/texture.jpg')});
var mesh = new THREE.Mesh(geometry, material);
etc
Rezultat:
Jednakże chciałbym użyć materiału Lambert jako baza i pracy na wierzchu, więc próbowałem to :
var lambertShader = THREE.ShaderLib['lambert'];
var uniforms = THREE.UniformsUtils.clone(lambertShader.uniforms);
var texture = THREE.ImageUtils.loadTexture('images/texture.jpg');
uniforms['map'].texture = texture;
var material = new THREE.ShaderMaterial({
uniforms: uniforms,
vertexShader: lambertShader.vertexShader,
fragmentShader: lambertShader.fragmentShader,
lights:true,
fog: true
});
var mesh = new THREE.Mesh(geometry, material);
wynik dla tego:
Wygląda na to, że moduł cieniujący nie bierze pod uwagę nowej tekstury, którą dodałem, jednak patrząc na inspektora po zalogowaniu się w mundurach, obiekt mapy ma poprawne wartości.
Jestem całkiem nowy dla trzech osób, więc mógłbym zrobić coś zasadniczo złego, jeśli ktoś mógłby wskazać mi właściwy kierunek, byłoby wspaniale.
Mogę też umieścić linki demo, jeśli byłoby to pomocne?
Dzięki Will
EDIT:
Oto kilka linków demo.
Demo z materiałem shaderów: http://dev.thinkjam.com/experiments/threejs/terrain/terrain-shader-material.html
Demo z materiałem roboczym lambert: http://dev.thinkjam.com/experiments/threejs/terrain/terrain-lambert-material.html
Tak, linki demonstracyjne byłyby pomocne. – mrdoob
Witaj mrdoob, okrzyki za szybką odpowiedź. Dodałem linki demo do postu. Jeśli możesz rzucić jakiekolwiek światło na to, to byłoby niesamowite – WillDonohoe
Zauważyłem, niektóre funkcje w renderze webgl specyficzne dla TRZECH.MeshLambertMaterial, który nie występuje z THREE.ShaderMaterial. Zwłaszcza z odświeżającymi mundurami. https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLRenderer.js#L4858 To tylko stab w ciemności tutaj, ale jest to coś, co może być przyczyną problemów ? – WillDonohoe