Javascript 来自point Light three.js的光线
有没有一种方法可以在三个js场景中查看点光源的光线。我尝试过雾,但它使场景中的所有对象都变成雾的颜色Javascript 来自point Light three.js的光线,javascript,three.js,Javascript,Three.js,有没有一种方法可以在三个js场景中查看点光源的光线。我尝试过雾,但它使场景中的所有对象都变成雾的颜色 var width = $('#g_pre_emo').width(); var scene = new THREE.Scene(); scene.fog = new THREE.Fog(0xffff00, 0, 10); var camera = new THREE.PerspectiveCamera(50, width / 500, 0.1, 1000); var rendere
var width = $('#g_pre_emo').width();
var scene = new THREE.Scene();
scene.fog = new THREE.Fog(0xffff00, 0, 10);
var camera = new THREE.PerspectiveCamera(50, width / 500, 0.1, 1000);
var renderer = new THREE.WebGLRenderer({antialias: false});
renderer.setSize(width, 500);
$('#g_pre_emo').append(renderer.domElement);
var intensity = 2.5;
var distance = 5;
var decay = 2.0;
var light = new THREE.AmbientLight(0x404040); // soft white light
scene.add(light);
renderer.shadowMap.Enabled = true;
renderer.setClearColor(0xffffff, 1);
var happyGroup = new THREE.Object3D();
var sadGroup = new THREE.Object3D();
var angryGroup = new THREE.Object3D();
var relaxedGroup = new THREE.Object3D();
scene.add(happyGroup);
scene.add(sadGroup);
scene.add(angryGroup);
scene.add(relaxedGroup);
var c1 = 0xffff00;
var sphere = new THREE.SphereGeometry(0.25, 16, 8);
light1 = new THREE.PointLight(c1, intensity, distance, decay);
light1.add(new THREE.Mesh(sphere, new THREE.MeshBasicMaterial({color: c1})));
scene.add(light1);
happyGroup.position.set(-3, 3, 0);
sadGroup.position.set(3, 3, 0);
angryGroup.position.set(-3, -3, 0);
relaxedGroup.position.set(3, -3, 0);
var happyGeometry = new THREE.SphereGeometry(1, 50, 50);
var happyMaterial = new THREE.MeshNormalMaterial();
var happySphere = new THREE.Mesh(happyGeometry, happyMaterial);
scene.add(happySphere);
happyGroup.add(happySphere);
var sadGeometry = new THREE.SphereGeometry(1, 50, 50);
var sadMaterial = new THREE.MeshNormalMaterial();
var sadSphere = new THREE.Mesh(sadGeometry, sadMaterial);
scene.add(sadSphere);
sadGroup.add(sadSphere);
var angryGeometry = new THREE.SphereGeometry(1, 50, 50);
var angryMaterial = new THREE.MeshNormalMaterial();
var angrySphere = new THREE.Mesh(angryGeometry, angryMaterial);
scene.add(angrySphere);
angryGroup.add(angrySphere);
var relaxedGeometry = new THREE.SphereGeometry(1, 50, 50);
var relaxedMaterial = new THREE.MeshNormalMaterial();
var relaxedSphere = new THREE.Mesh(relaxedGeometry, relaxedMaterial);
scene.add(relaxedSphere);
relaxedGroup.add(relaxedSphere);
renderer.gammaInput = true;
renderer.gammaOutput = true;
camera.position.z = 15;
function render() {
renderer.render(scene, camera);
}
;
render();
animate();
function animate() {
requestAnimationFrame(animate);
}
如果我运行上面的代码,我在场景中看不到任何雾
上面代码的提琴是
光线不是自动产生的。
通常,光线是使用高级像素着色器(照明区域上的模板/阴影投影/体积雾)创建的,或者在简单情况下,通过创建简单的alpha混合多边形并应用“光线”纹理来创建的 点光源只是在着色阶段不应用方向计算的光源。相反,只进行基于距离的计算
祝你好运 “光线”不是自动产生的东西。
通常,光线是使用高级像素着色器(照明区域上的模板/阴影投影/体积雾)创建的,或者在简单情况下,通过创建简单的alpha混合多边形并应用“光线”纹理来创建的 点光源只是在着色阶段不应用方向计算的光源。相反,只进行基于距离的计算 祝你好运 您可以使用Jerome Etienne提供的 对我来说,它在Three.js r71上运行良好,尽管我还没有在以后的版本中尝试过 用法可能的话,你可以使用Jerome Etienne的 对我来说,它在Three.js r71上运行良好,尽管我还没有在以后的版本中尝试过
用法说明请阅读我们的页面,了解如何改进此问题的提示。你可以从添加一个问题开始,请阅读我们的页面,了解如何改进这个问题。你可以从添加一个问题开始如果我添加聚光灯,它会在有雾的场景中产生光线吗?你能给我发送一个链接吗?嗨,Suhail,这些线在我看来是一个辅助机制,让你可以看到平行光指向的方向。我认为它除了节省时间之外没有其他用途(我通常在DirectX项目中创建光源时也这么做)。点光源是一种不太容易混淆的光源形式,因为它不完全指向一个方向,因此减少了对指导原则的需要。我刚刚遇到了一个可能会有所帮助的问题:如果我添加聚光灯,它会在有雾的场景中产生光线吗?你能给我发一个链接吗?嗨,Suhail,在我看来,这些线是一种辅助机制,可以让你看到平行光指向哪个方向。我认为它除了节省时间之外没有其他用途(我通常在DirectX项目中创建光源时也这么做)。点光源是一种不太容易混淆的光源形式,因为它不完全指向一个方向,因此减少了对指导原则的需要。我刚刚发现了这一点,这可能会有所帮助: