मैं छाया के साथ इलाके उत्पन्न करने के लिए एक शेडर बनाने पर काम कर रहा हूं।तीन जेएस - एक शेडर क्लोनिंग और वर्दी मान बदलना
मेरा प्रारंभिक बिंदु लैम्बर्ट शेडर को क्लोन करना है और अंततः इसे अपनी स्क्रिप्ट के साथ अनुकूलित करने के लिए शेडरमटेरियल का उपयोग करना है।
मानक विधि अच्छी तरह से काम करता है:
var material = new MeshLambertMaterial({map:THREE.ImageUtils.loadTexture('images/texture.jpg')});
var mesh = new THREE.Mesh(geometry, material);
etc
परिणाम:
हालांकि मैं एक आधार है और यह की चोटी पर काम के रूप में लैम्बर्ट सामग्री का उपयोग करना चाहते हैं, तो मैं यह करने की कोशिश की :
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);
इस एक के लिए परिणाम:
ऐसा लगता है कि शेडर मेरे द्वारा जोड़े गए नए बनावट को ध्यान में नहीं रख रहा है, हालांकि जब मैं वर्दी लॉग करता हूं तो इंस्पेक्टर को देखकर, मानचित्र ऑब्जेक्ट में सही मान होते हैं।
मैं तीन से बहुत नया हूं इसलिए मैं कुछ मौलिक रूप से गलत कर रहा हूं, अगर कोई मुझे सही दिशा में इंगित कर सकता है, तो यह बहुत अच्छा होगा।
यदि मैं सहायक होगा तो मैं डेमो लिंक भी डाल सकता हूं?
धन्यवाद, विल
संपादित करें:
यहाँ कुछ डेमो लिंक कर रहे हैं। शेडर सामग्री के साथ
डेमो: http://dev.thinkjam.com/experiments/threejs/terrain/terrain-shader-material.html
काम कर लैम्बर्ट सामग्री के साथ डेमो: http://dev.thinkjam.com/experiments/threejs/terrain/terrain-lambert-material.html
यूप, डेमो लिंक वास्तव में सहायक होंगे। – mrdoob
हाय mrdoob, त्वरित उत्तर के लिए चीयर्स। मैंने पोस्ट के डेमो लिंक जोड़े हैं। यदि आप इस पर कोई प्रकाश डाल सकते हैं, तो यह आश्चर्यजनक होगा – WillDonohoe
मैंने वेबल रेंडरर के भीतर कुछ कार्यक्षमता देखी है जो तीन के लिए विशिष्ट है।MeshLambertMaterial जो तीन। ShaderMaterial के साथ नहीं होता है। ताज़ा वर्दी के साथ विशेष रूप से। https://github.com/mrdoob/three.js/blob/master/src/renderers/WebGLRenderer.js#L4858 यह अंधेरे में केवल एक स्टैब है, लेकिन यह ऐसा कुछ है जो समस्याएं पैदा कर सकता है ? – WillDonohoe