首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对THREE.Sprite进行分组以共享相同的变换点

对THREE.Sprite进行分组以共享相同的变换点
EN

Stack Overflow用户
提问于 2016-01-11 22:47:18
回答 1查看 478关注 0票数 1

我有许多THREE.Sprite对象,它们构成了标签的一部分:图标+信息+文本。

在自上而下的OrthographicCamera相机对齐中,这些对齐效果很好,但是当我更改相机位置和旋转时,每个sprite (组嵌套在Object3D中)都会单独变换并失去对齐方式(即标签位于图标上方)。

有没有办法在一组精灵之间共享一个变换点?

用于说明更改摄像头位置时的问题的图像:

EN

回答 1

Stack Overflow用户

发布于 2016-01-12 22:15:58

的确有。我之前的question and answer问到了基本上相同的问题,并提供了一个解决方案:为了实现这一点,你需要偏移你的精灵,获取相机的角度,并用这些角度旋转精灵偏移。

您可以将精灵合并到一个组中,并偏移整个组而不是每个单独的精灵。这将为您提供最好的性能,因为无论何时旋转相机,都需要进行较少的计算。

假设您使用的是最近的THREE.js和OrbitControls (用于在controls上调用的方法),在( 0,0,0)处有一个精灵组,匹配您的标签组上的摄影机角度如下所示:

代码语言:javascript
复制
var euler = new Euler( controls.getPolarAngle() + Math.PI / 2, controls.getAzimuthalAngle(), 0, 'YXZ' );
var rotationMatrix = new Matrix4().makeRotationFromEuler( euler );

var offset = new THREE.Vector3( 0, - labelOffset, 0 );
spriteGroup.position.copy( offset.applyMatrix4( rotationMatrix ) );
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34724279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档