【发布时间】:2013-02-11 19:03:17
【问题描述】:
我最近将我的场景转换为使用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.js 脚本的THREE.Material 部分报告的。如果有帮助,我正在使用稍微定制的 three.js 版本——http://alteredqualia.com/three/examples/js/three.max.deferredday.js
感谢您的任何帮助!
更新
Here is a quick hack 公开版的 Three.js 出现了这个问题。
【问题讨论】: