【发布时间】:2015-09-21 14:03:32
【问题描述】:
我正在使用 dat.GUI 和 three.js (r72) 检查不同类型的灯光,并被困在动态打开/关闭 HemisphereLight 上。 我有一个将每个灯光添加到场景中的实例:
var pointLight = new THREE.PointLight(this._whiteColor);
pointLight.visible = false;
var hemisphereLight = new THREE.HemisphereLight(this._whiteColor, this._whiteColor);
hemisphereLight.visible = false;
等等……
还有一个用于使用简单处理程序打开/关闭的按钮。像这样:
me._sceneObjects.hemisphereLight.visible = value;
因此,在渲染之前,所有灯光都存在于场景中,但不可见。 当执行半球光的处理程序时 - 它保持不可见。排除后 hemisphereLight.visible = false;工作正常。
目前我在渲染第一帧后禁用此灯:
function render() {
some code ...
if (!sentenceExecuted && firstCall > 0) {
hemisphereLight.light.visible = false;
sentenceExecuted = true;
} else {
firstCall++;
}
};
如果您有任何解决此问题的建议,我将不胜感激。 很抱歉可能出现英文错误。
【问题讨论】:
-
1.您的代码片段并不清楚问题所在。你能举一个活生生的例子吗? 2. Wiki 文章How to Update Things with WebGLRenderer 可能会有所帮助。 3. 这个问题可能不是 HemisphereLight 特有的。
-
codepen 上的示例codepen.io/majeretft/pen/RWRjjB 目前面临另一个问题。我认为两者都与一个错误有关(应该调用一个函数来强制渲染重新计算一些数据,但找不到我错过的内容)
-
1.说真的,你必须说出问题所在。 2. 从
light.visible=true开始,您的代码似乎可以工作。
标签: three.js