相关疑难解决方法(0)

将3D位置转换为2d屏幕位置[r69!]

我需要Three.js代码将3D对象坐标转换为'div'元素中的2d,以便我可以将文本标签放置在需要的位置(没有那些标签缩放/移动/旋转以及3D移动).不幸的是,到目前为止我见过和尝试过的所有示例似乎都在使用过时的函数/技术.就我而言,我相信我使用的是R69 of Three.js.

这是一个"老"技术的例子,它只会给我带来错误:

Three.js:将3d位置转换为2d屏幕位置

下面是一些新代码(?)的片段,它没有为我提供足够的上下文工作,但看起来更清晰:

https://github.com/mrdoob/three.js/issues/5533

3d 2d coordinates three.js

26
推荐指数
3
解决办法
2万
查看次数

如何在片段着色器中使用gl_FragCoord.z在现代OpenGL中线性渲染深度?

我阅读了很多关于使用片段着色器获取深度的信息.

http://www.opengl.org/discussion_boards/ubbthreads.php?ubb=showflat&Number=234519

但我还是不知道这是否gl_FragCoord.z是线性的.

GLSL规范称屏幕上的范围为[0,1]而未提及线性与否.

我认为线性是至关重要的,因为我将使用渲染模型来匹配Kinect的深度图.

那么如果它不是线性的,那么如何在世界空间中线性化呢?

opengl shader glsl depth-buffer depth

9
推荐指数
3
解决办法
9822
查看次数

Three.js:缩放时如何保持精灵文本大小不变

在three.js中,当鼠标被缩放时,文本将被放大并相应地减小.

var texture = new THREE.Texture( canvas );
var material = new THREE.SpriteMaterial ( { map: texture, transparent:false } );
var sprite = new THREE.Sprite( material );
Run Code Online (Sandbox Code Playgroud)

当鼠标缩放时,如何防止文本大小发生变化?

canvas sprite three.js

9
推荐指数
2
解决办法
6103
查看次数

ThreeJS:调整浏览器窗口大小后计算透视相机的 FOV

我需要在浏览器窗口大小更改后获取正确的 Three.JS 相机 FOV。我已查看以下问题,但似乎无法找到我的问题的答案:

我的相机设置如下(“this”指我设置的 gameCamera 对象):

const CAMERA_DIST = 8000;   

-other stuff- 

this.camera = new THREE.PerspectiveCamera(
  45,                                      //FOV parameter
  window.innerWidth / window.innerHeight,  //aspect ratio parameter
  1,                                       //frustum near plane parameter
  CAMERA_DIST                              //frustum far plane parameter
);
Run Code Online (Sandbox Code Playgroud)

当用户调整浏览器窗口大小时,将调用以下更新代码。我包含了在这里找到的代码:(如何用三个 js 计算透视相机的 fov?)用于尝试计算新的 FOV('aFOV')。

function onWindowResize() {
  gameCamera.camera.aspect = window.innerWidth / window.innerHeight;
  console.log(gameCamera.camera.fov);
  gameCamera.camera.updateProjectionMatrix();
  renderer.setSize( window.innerWidth, window.innerHeight );
  console.log(gameCamera.camera.fov);
  let aFOV = 2*Math.atan((window.innerHeight)/(2*CAMERA_DIST)) * (180/Pi);
  console.log(aFOV);
  windowHalfX = window.innerWidth / 2;
  windowHalfY = window.innerHeight / 2;
} …
Run Code Online (Sandbox Code Playgroud)

javascript 3d perspectivecamera three.js

6
推荐指数
1
解决办法
5475
查看次数

三.JS更新透视相机的fov值并保持相同的相机距离

我想在动画过程中修改相机的 FOV 值。不幸的是,一旦我实现了 FOV 值,我就可以观察到我的场景变得更小。

所以我一直想知道,FOV 值和透视相机的距离位置之间的数学联系是什么?

这个想法是在 FOV 值发生变化时拥有相同的场景(通过修改相机位置来实现相同的大小)。

非常感谢。

编辑1:

这是说明我的问题的片段:当我实现相机的 FOV 值(从 4 到 45)时,我的方块和相机之间的距离发生了变化。我该如何预防呢?

        let W = window.innerWidth, H = window.innerHeight;
        
        let renderer = new THREE.WebGLRenderer( { antialias: true, alpha: true } );
        renderer.setPixelRatio( window.devicePixelRatio );
        renderer.setSize( W, H );

        document.body.appendChild( renderer.domElement );

        let camera = new THREE.PerspectiveCamera( 4, W/H, 1, 100 );
        let scene = new THREE.Scene();

        camera.position.set(0,0,14);
        camera.lookAt(0,0,0);

        let geo = new THREE.BoxGeometry(0.5, 0.5, 0.5);
        let mat = new THREE.MeshNormalMaterial();
        let mesh = new …
Run Code Online (Sandbox Code Playgroud)

javascript camera three.js

4
推荐指数
1
解决办法
6706
查看次数

OpenGL - 鼠标坐标到空间坐标

我的目标是将球体放置在鼠标指向的位置(Z-coord为0).

我看到了这个问题,但我还没有理解MVP矩阵的概念,所以我研究了一下,现在我有两个问题:

如何从相机设置创建视图矩阵,如查找,眼睛和向上矢量?

我还阅读本教程的几种类型的相机,这一个WebGL的.

我仍然可以把它放在一起我不知道如何获得投影矩阵...

我应该采取哪些措施来实现所有这些目标?

c++ opengl graphics glut glfw

1
推荐指数
1
解决办法
1736
查看次数