Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/467.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 三JS glft模型奇异线_Javascript_Three.js - Fatal编程技术网

Javascript 三JS glft模型奇异线

Javascript 三JS glft模型奇异线,javascript,three.js,Javascript,Three.js,我正试图在这张照片上创造一些类似的东西 那么,如何从模型中删除这些奇怪的线条呢 在旋转模型时可以看到这些线。 有什么问题?我需要使用不透明度,以获得类似于scrinshot的结果。 至少,我可以为用户隐藏背景,但反射率和金属性将在我的模型上 我的3JS脚本在这里 谢谢你的帮助 将*作为三个源导入'https://threejs.org/build/three.module.js'; 从导入{OrbitControls}https://threejs.org/examples/jsm/cont

我正试图在这张照片上创造一些类似的东西 那么,如何从模型中删除这些奇怪的线条呢 在旋转模型时可以看到这些线。 有什么问题?我需要使用不透明度,以获得类似于scrinshot的结果。 至少,我可以为用户隐藏背景,但反射率和金属性将在我的模型上

我的3JS脚本在这里 谢谢你的帮助


将*作为三个源导入'https://threejs.org/build/three.module.js';
从导入{OrbitControls}https://threejs.org/examples/jsm/controls/OrbitControls.js';
从导入{GLTFLoader}https://threejs.org/examples/jsm/loaders/GLTFLoader.js';
从导入{RGBELoader}https://threejs.org/examples/jsm/loaders/RGBELoader.js';
从导入{RoughnessMipmapper}https://threejs.org/examples/jsm/utils/RoughnessMipmapper.js';
var容器、控件;
摄像机、场景、渲染器;
init();
render();
函数init(){
container=document.createElement('div');
文件.正文.附件(容器);
摄像头=新的三个透视摄像头(45,window.innerWidth/window.innerHeight,0.25,20);
相机位置设置(-1.8,0.6,2.7);
场景=新的三个。场景();
新RGBELoader()
.setDataType(三个.UnsignedByteType)
.setPath('https://threejs.org/examples/textures/equirectangular/')
.load('royal_esplanade_1k.hdr',函数(纹理){
var envMap=pmremGenerator.fromEquirectangle(纹理).texture;
scene.background=envMap;
scene.environment=envMap;
texture.dispose();
pmremGenerator.dispose();
render();
//模型
//使用粗糙度mipmapper是可选的
var roughnessMipmapper=新的roughnessMipmapper(渲染器);
var loader=新的GLTFLoader()
loader.load('http://weblife.su/WineBazar/1/ws_r_2-5.glb,函数(gltf){
gltf.scene.transverse(函数(子函数){
if(child.isMesh){
子.material.color.setHex(0x9ed7f5);
子.material.emissive.setHex(0x062f61);
child.material.transparent=true;
child.material.opacity=0.5;
child.material.needsUpdate=true;
child.material.reflectivity=0.8;
child.material.糙率=0.2;
child.material.metalness=0.5;
child.depthWrite=true;
}
});
scene.add(gltf.scene);
roughnessMipmapper.dispose();
render();
});
});
renderer=new THREE.WebGLRenderer({
反别名:对
});
renderer.setPixelRatio(window.devicePixelRatio);
renderer.setSize(window.innerWidth、window.innerHeight);
renderer.toneMapping=THREE.ACESFilmicToneMapping;
renderer.toneMappingExposure=1;
renderer.outpunecoding=3.sRGBEncoding;
container.appendChild(renderer.domeElement);
var pmremGenerator=新的三个.pmremGenerator(渲染器);
pmremGenerator.compileeRequestAngularShader();
控件=新的轨道控件(摄影机、渲染器.doElement);
controls.addEventListener('change',render);//在没有动画循环时使用
控件。minDistance=2;
controls.maxDistance=32;
控制目标集(0,0,-0.2);
控件更新();
addEventListener('resize',onWindowResize,false);
}
函数onWindowResize(){
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectMatrix();
renderer.setSize(window.innerWidth、window.innerHeight);
render();
}
//
函数render(){
渲染器。渲染(场景、摄影机);
}

看起来像是自透明工件。如果遇到此类渲染问题,应始终将
depthWrite
设置为
false
。但是,即使是这种设置也可能无助于消除所有故障,因为正确渲染透明度非常棘手。您需要一种特殊的独立于顺序的透明算法,如深度剥离,这是
three.js
所不支持的

GitHub的相关问题: