Three.js 锻造查看器Autodesk v7三种。材质:';地图';参数在THREE.PointCloudMaterial中未定义

Three.js 锻造查看器Autodesk v7三种。材质:';地图';参数在THREE.PointCloudMaterial中未定义,three.js,autodesk-forge,autodesk-viewer,autodesk-bim360,Three.js,Autodesk Forge,Autodesk Viewer,Autodesk Bim360,最终编辑:使用THREE.PointCloudMaterial在Autodesk Forge Viewer v7中被破坏。坚持三点 编辑:我使用的Forge Viewer有定制版本的Three.js release r71(),这就是我使用过时代码的原因 EDIT2:我认为问题可能是因为map想要使用三个.ImageUtils.loadTexture()而不是三个.TextureLoader?当我使用三个.ImageUtils.loadTexture()时,我得到一个图像未定义的位置。猜测它与回

最终编辑:使用THREE.PointCloudMaterial在Autodesk Forge Viewer v7中被破坏。坚持三点

编辑:我使用的Forge Viewer有定制版本的Three.js release r71(),这就是我使用过时代码的原因

EDIT2:我认为问题可能是因为map想要使用三个.ImageUtils.loadTexture()而不是三个.TextureLoader?当我使用三个.ImageUtils.loadTexture()时,我得到一个图像未定义的位置。猜测它与回调函数有关

EDIT3:
3.Material:'map'参数未定义
与Petr的答案一起消失,但在Forge Viewer中仍然看不到纹理:

可能是与WebGL渲染警告相关的问题:没有绑定到单元0的纹理

代码(抱歉弄乱了):

控制台输出:
3.Material:'map'参数未定义

r121文档(我被困在r71上):


我的问题是,是我使用PointCloud材料的过错吗?这是虫子吗?我需要导入什么吗?

您的材质创建应该是

var材料=新的三点材料(参数)

不知道为什么要使用PointCloudMaterial。 此外,PointCloud不是Three.js中的标准类。链接到的页面建议您使用点:


var点=新的三个点(几何、材料)

未定义
THREE.Material:'map'参数
错误来自THREE.js,与此行代码相关:

map:new THREE.TextureLoader().load('../data/toppng.com-particles-3000x2000.png'),
three.js R71中的方法不返回任何内容。加载的纹理必须从回调函数中检索,例如:

var materialForShapes=新的三点云材料({
地图:,
颜色:0xffff00,
透明:假,
不透明度:0.9,
尺寸:10,
});
新的THREE.TextureLoader().load('../data/toppng.com-particles-3000x2000.png',函数onLoad(tex){
materialForShapes.map=tex;
});

谢谢您的回复。我刚刚做了一个编辑。Forge Viewer使用过时的Three.js版本。不幸的是,点材质和点在Forge Viewer中无法识别。哈,这太过时了。他们说,他们的支持团队将寻找
[autodesk forge]
标签,希望他们中的一位能够尽快过来帮助您。如果你不介意我问的话,你为他们的服务付多少钱?听起来他们是在收费使用一个过时的图书馆,它对每个人都是免费的,并众包他们的客户支持。也许?尝试了这个链接,但问题仍然存在。在实验室里,我们正在使用试验版本,作为研究人员,我们有特殊的权限。再次感谢您的尝试。希望Autodesk的人很快就能看到这一点。至于使用过时的three.js版本,我们知道这对我们的许多客户来说都是一个问题,但不幸的是,进行此类升级非常困难。说来话长,但TLDR:Forge-Viewer需要定制/优化很多three.js的内部结构(用于性能改进),但three.js并不是完全可扩展的。这两个代码库现在分歧太大了,试图将它们合并在一起是一件很麻烦的事。谢谢你的回复。控制台中的消息似乎消失了,但纹理仍然没有显示。但是,如果我自己运行three.js(不使用Forge Viewer),纹理看起来很好。请参见上面EDIT3中的代码
var PointMaterial = new THREE.PointCloudMaterial({
            color: 0xFF0000,
            size: 5,
            map: "",
        })
new THREE.TextureLoader().load( '../img/epidemics.png', function onLoad(tex) {
            PointMaterial.map = tex;
          });
var geom = new THREE.Geometry(0.5, 0.5, 0.5);
let up_to_down = -4.5
    for (let i = 0; i < 10; i++) {
         let left_to_right = -4.5
         for (let j = 0; j < 10; j++) {
              for (let k = 0; k < 100; k++) {
              var vertex = new THREE.Vector3();
              vertex.x = Math.random() * ((-0.5 + left_to_right) - (0.5 + left_to_right)) + (0.5+left_to_right);
              vertex.y = 0;
              vertex.z = Math.random() * ((-0.5 + up_to_down) - (0.5 + up_to_down)) + (0.5 + up_to_down);
              geom.vertices.push(vertex);
                }
            }
        }
var particles = new THREE.PointCloud(geom, PointMaterial);
let geometryForShapes = new THREE.BoxGeometry( 1, 1, 1 );
var materialForShapes = new THREE.PointCloudMaterial({
            map: new THREE.TextureLoader().load( '../data/toppng.com-particles-3000x2000.png' ),
            color: 0xffff00,
            transparent: false,
            opacity: 0.9,
            size: 10,
        })
particles = new THREE.PointCloud( geometryForShapes, materialForShapes )