Three.js 中的初始精灵大小

Initial Sprite Size in Three.js

谁能帮我理解 three.js 最初是如何确定精灵的 size/scale 的?

目前我正在使用 4 个精灵(透明度为 3000px × 1830px 的 PNG)以 3D space 堆叠,但我必须将它们放大 16 倍到 22 倍。不过,为了防止精灵看起来被压扁,我必须将 y 轴缩放为 x 轴的 75%。

最终,我希望能够系统地引入图像,并适当地缩放它们。

可能是我没有正确设置它。看起来不错,但现在感觉超级hacky。我几乎改变了一堆数字,直到它看起来对我来说是正确的。我不喜欢那样。我想明白。

这是我目前正在处理的内容: http://valorink.com/3d-test/Whosebug/

查看 Sprite class 的代码表明在构造函数中创建了一个宽度和高度为 1 的简单平面。我不会期望任何其他东西,因为几何尺寸通常不是由纹理尺寸定义的。

您可能希望它们填满视口,因此您必须缩放它们。对于透视相机,它有点数学,因为适合视口大小的 x-scale(或 y-scale)的数量与到相机的距离有关。所以,它应该是这样的

var halfHeigt = distanceToCamera / Math.tan( camera.fov/2 * Math.PI / 180 );
y-scale = halfHeight * 2;

当然,您需要考虑纵横比,以免看起来被压扁。所以,x-scale 应该是 y-scale * textureWidth / textureHeight,反之亦然 y-scale = x-scale * textureHeight / textureWidth