不分配新箭头的情况下更新ArrowHelper的困难

youpilat13

我尝试更新的3组件ArrowHelperthree.js现在,ArrowHelper仅在绘画函数的每次调用中分配新的动画,就可以成功更新动画3

例如,在我的main函数中,我首先分配如下3 ArrowHelper

// Parameters for vector
var directionMainVectorX = new THREE.Vector3(1, 0, 0);
var directionMainVectorY = new THREE.Vector3(0, 1, 0);
var directionMainVectorZ = new THREE.Vector3(0, 0, 1);

var originMainVector = new THREE.Vector3(0, 0, 0);
var lengthVector = 20;
var widthVector = 3;
var headLengthVector = 1.5;
var headWidthVector = 1.5;
var hexVector = 0x11ff00;

mainVectorX = new THREE.ArrowHelper(directionMainVectorX, originMainVector, lengthVector, hexVector, headLengthVector, headWidthVector);
mainVectorY = new THREE.ArrowHelper(directionMainVectorY, originMainVector, lengthVector, hexVector, headLengthVector, headWidthVector);
mainVectorZ = new THREE.ArrowHelper(directionMainVectorZ, originMainVector, lengthVector, hexVector, headLengthVector, headWidthVector);

然后,进入drawVector()函数,我有:

function drawVector() {

  // Parameters for ArrowHelper
  var headLengthVector = 1.5;
  var headWidthVector = 1.5;
  var hexVector = 0x11ff00;
  var widthVector = 3;

  // SOLUTION : Allocating each time a new vector
  mainVectorX = new THREE.ArrowHelper(directionMainVectorX.normalize(), originMainVector, lengthVector, hexVector, headLengthVector, headWidthVector);
  mainVectorY = new THREE.ArrowHelper(directionMainVectorY.normalize(), originMainVector, lengthVector, hexVector, headLengthVector, headWidthVector);
  mainVectorZ = new THREE.ArrowHelper(directionMainVectorZ.normalize(), originMainVector, lengthVector, hexVector, headLengthVector, headWidthVector);

  // Width for mainVector
  mainVectorX.line.material.linewidth = widthVector;    
  mainVectorY.line.material.linewidth = widthVector;    
  mainVectorZ.line.material.linewidth = widthVector;    

  // Add arrows to scene reference
  scene.add(mainVectorX);
  scene.add(mainVectorY);
  scene.add(mainVectorZ);    

}

最后,我的render功能:

function render() {

  rotateCamera();

  drawVector();

  controls.update();

  renderer.render(scene, camera);

  scene.remove(mainVectorX);
  scene.remove(mainVectorY);
  scene.remove(mainVectorZ);

}

使用以上所有代码,一切正常。

我的问题是我不想使用“ allocating at each call of drawVector() function”。

这就是为什么我只分配一次3的原因ArrowHelper(我在main代码的开头进行分配),然后通过使用intodrawVector()函数来更新它们的组件,如下所示:

function drawVector() {

  // Parameters for ArrowHelper
  var headLengthVector = 1.5;
  var headWidthVector = 1.5;
  var hexVector = 0x11ff00;
  var widthVector = 3;

  // Compute coordinates of 3vectors

  // Compute directions
  directionMainVectorX.set(1, 0, 0);
  directionMainVectorY.set(0, 1, 0);  
  directionMainVectorZ.set(0, 0, 1);    

  // Update mainVector

  // SOLUTION : update the parameters of vector
  mainVectorX.position.set(originMainVector);
  mainVectorY.position.set(originMainVector);
  mainVectorZ.position.set(originMainVector);    

  mainVectorX.setDirection(directionMainVectorX.normalize());
  mainVectorY.setDirection(directionMainVectorY.normalize());  
  mainVectorZ.setDirection(directionMainVectorZ.normalize());  

  mainVectorX.setLength(lengthVector, headLengthVector, headWidthVector);
  mainVectorX.setColor(hexVector)

  mainVectorY.setLength(lengthVector, headLengthVector, headWidthVector);
  mainVectorY.setColor(hexVector)

  mainVectorY.setLength(lengthVector, headLengthVector, headWidthVector);
  mainVectorY.setColor(hexVector)    

  // Add arrows to scene reference
  scene.add(mainVectorX);
  scene.add(mainVectorY);
  scene.add(mainVectorZ);    
}

我在上一篇文章中看到了这种方法: update ArrowHelper

但是不幸的是,什么都没有出现,我错过了一些东西,但是我不知道...

如果有人可以帮助我,那就太好了。

德特·特德尼克(Derte Trdelnik)

Vector3.set需要3个参数-x, y, z不是另一个向量,因此您应该使用mainVectorX.position.set(originMainVector.x,originMainVector.y,originMainVector.z); mainVectorX.position.copy(originMainVector);

将您的drawVector(现在可以称为updateVector :)重写为

function drawVector() {

  // Parameters for ArrowHelper
  var headLengthVector = 1.5;
  var headWidthVector = 1.5;
  var hexVector = 0x11ff00;
  var widthVector = 3;

  if(!mainVectorX.parent){    
    // Add transported arrow to scene reference
    scene.add(mainVectorX);
    scene.add(mainVectorY);
    scene.add(mainVectorZ);    
  }
  mainVectorX.position.copy(originMainVector);
  mainVectorY.position.copy(originMainVector);      
  mainVectorZ.position.copy(originMainVector);

  mainVectorX.setDirection(directionMainVectorX.normalize());
  mainVectorY.setDirection(directionMainVectorY.normalize());  
  mainVectorZ.setDirection(directionMainVectorZ.normalize());  

  mainVectorX.setLength(lengthVector, headLengthVector, headWidthVector);
  mainVectorX.setColor(hexVector);

  mainVectorY.setLength(lengthVector, headLengthVector, headWidthVector);
  mainVectorY.setColor(hexVector);

  mainVectorY.setLength(lengthVector, headLengthVector, headWidthVector);
  mainVectorY.setColor(hexVector);
}

当然,您应该删除

scene.remove(mainVectorX);
scene.remove(mainVectorY);
scene.remove(mainVectorZ);

从渲染功能

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在不分配ID的情况下引用元素?

来自分类Dev

在不分配功能的情况下反应Typescript FunctionalComponent

来自分类Dev

在不分割的情况下使用dlply

来自分类Dev

如何在不分配更多存储空间的情况下从数组初始化向量?

来自分类Dev

如何在不分配的情况下跳过具有读取的N个字节?

来自分类Dev

如何在不分配变量的情况下使用异步等待?避免从未使用过的价值

来自分类Dev

为什么DbFlow不能在不分配变量的情况下保存对象?

来自分类Dev

在不分配任何值的情况下在SQL表中插入新行

来自分类Dev

在不分配任何值的情况下在SQL表中插入新行

来自分类Dev

在以下情况下,map如何分配新值?

来自分类Dev

在功能中的开关情况下如何分配新值?

来自分类Dev

在以下情况下,map如何分配新值?

来自分类Dev

是否可以在不分配内存来存储序列化数据的情况下计算对象的序列化大小?

来自分类Dev

如何在不分配内存的情况下将opencv映射到具有对齐支持的特征值?

来自分类Dev

如何在不分叉的情况下运行Shell命令

来自分类Dev

如何在不分组的情况下使用圆括号?

来自分类Dev

新不分配内存

来自分类Dev

新不分配内存

来自分类Dev

如何在不分配Java堆字节数组的情况下解析直接内存中的Google协议缓冲区?

来自分类Dev

我可以在不分配第二个char指针的情况下将char指针指向另一个吗?

来自分类Dev

iOS无法在切换情况下分配新对象

来自分类Dev

为什么在未分配新值的情况下更改此引用?

来自分类Dev

R:在不预先分配的情况下动态更新矩阵时的效率问题

来自分类Dev

如何在不分配的情况下调用表达式语句

来自分类Dev

在不使用图像的情况下制作箭头

来自分类Dev

如何在不分支的情况下强制将NAN *零强制赋予零?

来自分类Dev

如何在不分割单词的情况下将字符数限制设置为100?

来自分类Dev

如何在不分析jacobian的情况下从FMU或Dymola访问模型jacobian

来自分类Dev

如何在不分割单词的情况下将字符数限制设置为100?

Related 相关文章

  1. 1

    如何在不分配ID的情况下引用元素?

  2. 2

    在不分配功能的情况下反应Typescript FunctionalComponent

  3. 3

    在不分割的情况下使用dlply

  4. 4

    如何在不分配更多存储空间的情况下从数组初始化向量?

  5. 5

    如何在不分配的情况下跳过具有读取的N个字节?

  6. 6

    如何在不分配变量的情况下使用异步等待?避免从未使用过的价值

  7. 7

    为什么DbFlow不能在不分配变量的情况下保存对象?

  8. 8

    在不分配任何值的情况下在SQL表中插入新行

  9. 9

    在不分配任何值的情况下在SQL表中插入新行

  10. 10

    在以下情况下,map如何分配新值?

  11. 11

    在功能中的开关情况下如何分配新值?

  12. 12

    在以下情况下,map如何分配新值?

  13. 13

    是否可以在不分配内存来存储序列化数据的情况下计算对象的序列化大小?

  14. 14

    如何在不分配内存的情况下将opencv映射到具有对齐支持的特征值?

  15. 15

    如何在不分叉的情况下运行Shell命令

  16. 16

    如何在不分组的情况下使用圆括号?

  17. 17

    新不分配内存

  18. 18

    新不分配内存

  19. 19

    如何在不分配Java堆字节数组的情况下解析直接内存中的Google协议缓冲区?

  20. 20

    我可以在不分配第二个char指针的情况下将char指针指向另一个吗?

  21. 21

    iOS无法在切换情况下分配新对象

  22. 22

    为什么在未分配新值的情况下更改此引用?

  23. 23

    R:在不预先分配的情况下动态更新矩阵时的效率问题

  24. 24

    如何在不分配的情况下调用表达式语句

  25. 25

    在不使用图像的情况下制作箭头

  26. 26

    如何在不分支的情况下强制将NAN *零强制赋予零?

  27. 27

    如何在不分割单词的情况下将字符数限制设置为100?

  28. 28

    如何在不分析jacobian的情况下从FMU或Dymola访问模型jacobian

  29. 29

    如何在不分割单词的情况下将字符数限制设置为100?

热门标签

归档