javascript - position.set 如何使 Canvas 图像居中?

标签 javascript three.js html5-canvas

嘿伙计们,我刚刚浏览了这个 Three.js 示例 HERE 在研究了这个例子一段时间后,我看到了下面的函数:

// NOTE :: the below function, helps in positioning the 5 static red dots 
            function updateHUDSprites () {

                var width = window.innerWidth / 2;
                var height = window.innerHeight / 2;

                var material = spriteTL.material;

                var imageWidth = material.map.image.width / 2;
                var imageHeight = material.map.image.height / 2;

                // NOTE :: the below lines, helps in positioning the 5 static red dots 
                spriteTL.position.set( - width + imageWidth,   height - imageHeight, 1 ); // top left
                spriteTR.position.set(   width - imageWidth,   height - imageHeight, 1 ); // top right
                spriteBL.position.set( - width + imageWidth, - height + imageHeight, 1 ); // bottom left
                spriteBR.position.set(   width - imageWidth, - height + imageHeight, 1 ); // bottom right
                spriteC.position.set( 0, 0, 1 ); // center

            }

这个函数基本上是帮助定位所有 5 个 png,我已经玩了很多上面的代码,但我仍然不明白居中是如何工作的,例如下面的行:

spriteC.position.set( 0, 0, 1 ); // center

通过稍微研究一下这个例子,我意识到上面的代码行实际上是定位中心图像,我只是不明白传递给position.set()函数的值。如果有人可以解释一下 spriteC.position.set( 0, 0, 1 ); 是如何做到的实际上将图像居中,那就太好了。

最佳答案

这取决于相机的放置方式

Sprite 使用正交相机渲染renderer.render( sceneOrtho,cameraOrtho );并且它的位置(0,0,10),看着原点(0,0,0)

原点处或沿与 z 轴平行的线(我们的 Sprite (0,0,1))的任何物体都将显示在中心,负 x 坐标会将对象向左移动,向右移动正值,与 y

相同

关于javascript - position.set 如何使 Canvas 图像居中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38495196/

相关文章:

three.js - webgl 透明度在某些计算机上不起作用,为什么?

javascript - 在 Canvas 上旋转现有图像

javascript - HTML5 视频在加载新视频时更改宽度/高度或出现故障?

javascript - 在 getJSON jquery 中传递输入值

javascript - 将数据推送到 dojo 对象存储中

3d - WebGL 片段着色器输出的颜色在不同平台上有很大差异

javascript - Three.js Raycaster 与球体的碰撞检测

javascript - 渲染前保存canvas的dataImage

javascript - 如何使用 HTML、Javascript 或 CamanJS 将图像分成几 block 并重新排列?

Javascript 公共(public)方法参数作为私有(private)变量