我有一个关于2个不同代码片段的问题,用于沿directionVectorLocal
向量定义的方向绘制矢量。
第一个:
var transportedVector = {
coordLocal,
arrowHelper,
directionVectorLocal,
directionVector
};
var arrowHelperTest = new THREE.ArrowHelper(transportedVector.directionVectorLocal.normalize(), originLocalBasis, 100);
camera.add(arrowHelperTest);
在这种情况下,箭头arrowHelperTest
很好地显示在场景中。
现在,第二个:
var arrowHelper;
var transportedVector = {
coordLocal,
arrowHelper,
directionVectorLocal,
directionVector
};
transportedVector.arrowHelper = new THREE.ArrowHelper(transportedVector.directionVectorLocal.normalize(), originLocalBasis, 100);
camera.add(transportedVector.arrowHelper);
在这种情况下,不显示箭头transportedVector.arrowHelper
。
在这里,我必须声明" var arrowHelper;
"就在定义transportedVector
对象之前,因为如果没有,我会得到一个" ReferenceError: arrowHelper is not defined
"错误。
我想将动态transportedVector.arrowHelper
声明定义到transportedVector
对象中,并能够将其绘制到场景中。解决方案可能很简单,但我不是Javascript的专家。
如果有人能看出错误,那就太好了。
由于
答案 0 :(得分:0)
查看我对您原始帖子的评论。在我的情况下,此代码似乎正常工作:
var directionVectorLocal = new THREE.Vector3(0,0,-1);
var originLocalBasis = new THREE.Vector3(0,0,0);
var transportedVector = {
arrowHelper: null,
directionVectorLocal: directionVectorLocal
};
transportedVector.arrowHelper = new THREE.ArrowHelper(transportedVector.directionVectorLocal.normalize(), originLocalBasis, 100); // <-- Note the length of the arrow must be greater than the zNear value of the camera, otherwise it won't be visible.
camera.add(transportedVector.arrowHelper);
scene.add(camera);