我最近将我的场景转换为使用 a WebGLDeferredRenderer
,因为它更容易实现 SSAO。但是,由于转换为延迟渲染器,我无法渲染THREE.Line
对象。相反,我收到以下错误:
THREE.Material: 'shading' parameter is undefined.
这是当我不使用延迟渲染器时可以正常工作的线条(网格)的代码:
var geometry = new THREE.Geometry();
geometry.vertices.push( new THREE.Vector3( -2500, 0, 0 ) );
geometry.vertices.push( new THREE.Vector3( 2500, 0, 0 ) );
linesMaterial = new THREE.LineBasicMaterial( {color: 0xb9b9b9, linewidth: 0.1} );
for ( var i = 0; i <= 50; i ++ ) {
var line = new THREE.Line( geometry, linesMaterial );
line.position.z = ( i * 100 ) - 2500;
scene.add( line );
var line = new THREE.Line( geometry, linesMaterial );
line.position.x = ( i * 100 ) - 2500;
line.rotation.y = 90 * Math.PI / 180;
scene.add( line );
}
我尝试将shading
属性添加到THREE.LineBasicMaterial
具有诸如之类的值,THREE.FlatShading
但我仍然得到相同的错误。
该错误是从THREE.Material
主 three.js 脚本的部分报告的。如果有帮助,我将使用 three.js 的稍微定制的版本 - <a href="http://alteredqualia.com/three/examples/js/three.max.deferredday.js" rel="nofollow"> http://alteredqualia.com/three/examples/js/three.max.deferredday.js
任何和所有的帮助表示赞赏!
更新
这是一个快速破解公开版本的 Three.js 展示此问题的方法。