You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Three.js技术求助:如何将物体向右微调以避开HTML文本

解决Three.js 3D书本遮挡HTML文本的位置调整问题

核心问题分析

你之前用objBook.position.set(100,100,100)无效的原因是:Three.js场景里的物体尺寸很小(你的书本用BoxGeometry(3.5,5,0.5)创建),100这种大数值会让物体直接飞出相机视野,看不到效果。需要用和物体尺寸匹配的小数值来微调。

具体解决方案

1. 固定位置微调(推荐)

在创建书本物体并添加到场景后,直接修改其position.x属性(Three.js中x轴正方向对应页面右侧),数值根据实际遮挡情况调整(比如1-3之间测试):

const objBook = new THREE.Mesh( geometry, materials );
scene.add( objBook );
// 向右微调位置,避开HTML文本
objBook.position.x = 2; // 可根据实际遮挡程度调整为1.5、2.5等

也可以用set方法单独修改x轴,保持y、z轴不变:

objBook.position.set(2, 0, 0);

2. 结合滚动动画动态调整(如果需要随滚动改变位置)

如果要在滚动过程中同步调整书本位置,可把位置逻辑加入animate函数或scroll事件:

function animate() {
    requestAnimationFrame( animate );
    currentTimeLine += (aimTimeLine - currentTimeLine) * 0.5;
    const rx = currentTimeLine * -0.5 + 0.5;
    const ry = (currentTimeLine * 0.9 + 0.1) * Math.PI * 2;
    objBook.rotation.set(rx,ry,0);
    // 随滚动动态调整x位置,示例:滚动越多越靠右
    objBook.position.x = currentTimeLine * 1 + 1;
    renderer.render( scene, camera );
};

3. 调试辅助技巧

添加坐标系辅助器,直观查看Three.js的轴向(红=x,绿=y,蓝=z),方便判断调整方向:

const axesHelper = new THREE.AxesHelper(5);
scene.add(axesHelper);

验证效果

调整后刷新页面,观察书本是否不再遮挡HTML文本,若仍有遮挡,微调position.x的数值即可。

内容的提问来源于stack exchange,提问作者th168

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:34:58