【发布时间】:2019-10-17 10:19:46
【问题描述】:
我有一个 three.js 项目,其中包含 3d 模型、一个地面和一个网格。 使用 outlinePass (https://threejs.org/examples/?q=outl#webgl_postprocessing_outline) 勾勒出 3d 模型。
我可以使用 Transformcontrol (https://threejs.org/examples/?q=transf#misc_controls_transform) 移动对象,我可以使用 Orbitcontrols (https://threejs.org/examples/?q=orbit#misc_controls_orbit) 更改我的相机位置
问题:图形似乎渲染得很糟糕,这里有一些截图: https://imgur.com/gallery/3FrZt3s
我真的不知道我应该在这里使用哪些设置:
renderer = new THREE.WebGLRenderer();//{ antialias: true } ); With antialiasing or without?
//antialiasing is only needed when not using fxaa, right??
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.gammaOutput = true;
renderer.physicallyCorrectLights = true;
camera = new THREE.PerspectiveCamera( 45, container.offsetWidth / container.offsetHeight, 0.001, 1000 );
camera.addEventListener( 'change', render ); //Is this necessary? Seems like it has no use
outlinePass 可能需要 FXAA(也在上面链接的 outlinePass 示例中)。
composer = new EffectComposer( renderer );
var renderPass = new RenderPass( scene, camera );
composer.addPass( renderPass );
effectFXAA = new ShaderPass( FXAAShader );
effectFXAA.uniforms[ 'resolution' ].value.set( 1 / window.innerWidth, 1 / window.innerHeight );
effectFXAA.renderToScreen = true;
composer.addPass( effectFXAA );
orbitControls = new OrbitControls( camera, renderer.domElement );
orbitControls.update();
orbitControls.addEventListener( 'change', render );
function render(){
renderer.render(scene, camera);
//composer.render(); // don't know if needed
}
所以我不得不说,我真的不知道如何解决渲染问题以及我必须设置哪些设置才能充分利用我的项目。我对每一个提示和答案都很满意,也许我可以把这些答案放在一起解决问题。
【问题讨论】:
标签: javascript three.js rendering render