推荐 最新
无敌奥特MEN

【three.js】偏移模型后,点击构件高亮部分与点击部分不一致?

问题如图所示,点击中间的白柱子,结果高亮的构件在下方。 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250107/1bf52f8636a53878cc5144ea77b51026.png) 我说一下我写的方法: 1、因为我只是浅调整了高度,所以通过调整"element.position.y",给模型进行了高度偏移,这里是向上偏移了2.5,所以,position打印出来是"{x: 0, y: 2.5, z: 0}",我知道这里是更改了模型的原点。 2、然后,我给光线投射raycaster增加了改动变量,"raycaster.ray.origin.add(finalPosition);",这里的finalPosition的值就是"{x: 0, y: 2.5, z: 0}",因为原先的原点是0,0,0,所以这里用"raycaster.ray.origin.add"或者"raycaster.ray.origin.set",我看渲染出来是一样的。 3、再然后,因为是要做模型分层的,所以我就没有直接使用scene.children,而是整了另一个数据集合models来做参考。"raycaster.intersectObjects(models);" (因为单纯的将visible设置为false,鼠标还是可以点击到的,所以要整一个新的数据集合来进行数据的清理) 目前看来,感觉是第三步出了问题,就好像模型都向上移动了2.5,结果光线投射这里的参考数据models还是在0,0,0。可是我打印models的时候,看到position也是0,2.5,0,甚至我后来给里面的所有构件都加上了偏移量,都是0,2.5,0。结果还是一样......实在是想不出到底问题出在哪里了啊,求教~~~~~ ~

18
1
0
浏览量262
一只tomatoo

【three.js】CSS3DRenderer创建的标签怎么控制其角度?

如下图所示: 我想实现的是,点击一个构件的时候,标签弹窗会出现在构件上方,与构件是在一个平面上;如果我转到模型的另一面,再点击一个构件,也是在一个平面上,跟构件一个朝向。 想要的效果是这样: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250108/3864616737e54cc66c6293da9dc1cd00.png) 但是,实际上,总是会出现各种角度偏转: "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250108/787fb9abf3c2b2516f96cbc4362f2756.png)"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250108/6eea1630cbf97187139ac3ae03469830.png)"image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250108/c2174919aabfbf43a74de7a354cd38f7.png) 实在是搞不懂怎么实现了... 之前是用2D去实现的,但是会出现缩放的时候,弹窗大小比例不正确、弹窗与构件之间的距离有误等问题,所以,尝试多次后还是决定用3D来实现,没想到碰到这个问题,这如何解决? 补充问题: lookAt的方法我是使用过的,但是会出现这样的奇葩情况 "image.png" (https://wmprod.oss-cn-shanghai.aliyuncs.com/images/20250108/f25e93196d974dd172ad559571a4a139.png) 弹窗下面的指示线乱指,标签的角度也是很奇怪...

16
1
0
浏览量370
导师小jio

【three.js】如何控制帧更新?

我拿到一段代码片段: const i = this._shouldRender(); if (i) { this._renderRequested = !1; // 将当前对象的 _renderRequested 属性设置为 false(注意:在JavaScript中 !1 等同于 false)。这可能意味着渲染请求已经被处理,或者不再需要渲染。 const i = r.Math.incrementWrap(t.frameNumber, 15e6, 1); // 这行代码再次声明了一个常量 i(这会覆盖之前声明的 i),并调用了 r.Math.incrementWrap 方法,传入了三个参数:t.frameNumber(当前的帧编号)、15e6(可能是帧编号的最大值,这里使用的是1500万)、1(增量)。incrementWrap 方法可能是用来增加帧编号,并在达到最大值时将其环绕(wrap)回到起始值。 this.updateFrameNumber(i, e), // 这行代码调用当前对象的 updateFrameNumber 方法,更新帧编号。它传入了新的帧编号 i 和另一个参数 e t.newFrame = !0 // 将某个对象 t 的 newFrame 属性设置为 true(在JavaScript中 !0 等同于 true)。这可能意味着标记了一个新的渲染帧的开始。 } // 综合来看,这段代码的作用是检查是否应该渲染新的一帧,如果是,则取消渲染请求标志,更新帧编号,并标记新帧的开始。这是典型的在游戏或者图形应用中用于控制帧更新和渲染的逻辑。 这段代码是用来判断是否渲染新的一帧的,这个我理解。但是,不太理解的是,为啥要给数据打上一个帧编号"t.frameNumber",并对应的进行更新。这个"t.frameNumber"在整个帧更新中的作用是什么? 难道是当前帧数与帧编号相同的就进行渲染更新?还是...?

0
1
0
浏览量212
PunkMaccccc

使用GL Transitions配合REGL做视频转场,不显示视频纹理?

在创建视频的时候,如果调用视频的"play"方法,就能够看到视频: const video = document.createElement('video'); ...... video.oncanplaythrough = ()=>{ video.play(); //如果不写这句,webGL就无法显示视频纹理 } 请教这是为什么呢?如果我要给很多个视频做转场,那么同时播放多个视频就会很卡……

0
1
0
浏览量165
莫克先森

这种效果如何实现呢?

这种效果如何使用"THREEjs"实现? https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20241004/34bd0241ceb9d84f0b3f938da23c5342.png

0
1
0
浏览量138
我爱了你呢

Three.js 如何给模型的渲染进行优化?

如何给模型的渲染进行优化? 上图是我自己渲染出来的,下图是把模型上传到别的平台上渲染出来的,但是,很明显看出下图的更清晰一些,是因为加了阴影吗?还是别的什么?怎么样才能做到像图二一样。 "这是我渲染出来的" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240917/1ac3b1fb0589c497e3c95c2eb8ab2740.png) (这是我渲染出来的) *** "这是别的平台渲染的" (https://wmprod.oss-cn-shanghai.aliyuncs.com/c/user/20240917/1479387f7697f26604cf65246dd7f5a0.png) (这是通过别的平台渲染出来的)

0
1
0
浏览量157
Midclimateeee

如何在网页上实现对于3D CAD文件的解析预览?

如何在网页上实现对于3D CAD文件的解析预览? 比如常用的机械设计文件格式,solidworks、UG、CATIA等

0
1
0
浏览量16
一一在debug

Three.js 渲染模型时的透光问题怎么解决?

threejs的使用过程中,我发现会透光,在一些角度会穿过模型,有些时候不会穿过模型,是怎么回事 https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241105/5b0f780c59c7d1b6af9f1ec417adda9f.png https://wmlx-new-image.oss-cn-shanghai.aliyuncs.com/images/20241105/a11100cece165f43a7e5727e482649a9.png threejs的使用过程中,我发现会透光,在一些角度会穿过模型,有些时候不会穿过模型,是怎么回事,希望各位大佬帮忙解决,感谢

0
1
0
浏览量16