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

Three.js从数组设置体素透明度异常问题求助

解决Three.js体素查看器透明度不生效的问题

嘿,我仔细梳理了你的代码逻辑,很快就找到问题根源啦——数组索引和循环维度不匹配,导致你从voxels里取到的透明度值全是0,自然所有体素都看不见!

问题核心原因

你定义的voxels数组结构是[z轴层][y轴行][x轴列],但在循环创建立方体时,却用了voxels[x][y][z]来获取透明度值——相当于把x当成了z轴索引,z当成了x轴索引。如果你的voxels数组里前几个z层的值都是0,那所有立方体的opacity都会被设为0,直接变成透明状态。

快速修复方案

把循环里的透明度取值代码改成和数组维度对应:

opacity: voxels[z][y][x]

这样就能让每个立方体的x/y/z位置,和voxels数组里的对应单元格值精准匹配了。

额外排查小技巧

如果修改后还是有问题,可以在循环里加一行日志,确认取到的数值是否符合预期:

console.log(`位置(${x},${y},${z})的opacity值:${voxels[z][y][x]}`);

这样能直观看到每个立方体的透明度设置是不是正确。

另外再确认下MeshBasicMaterial的transparent属性已经设为true——你代码里已经配置了这一项,手动设置1/0能正常显示也验证了这部分没问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:39:51