Forge Viewer Autodesk v7 THREE.Material: 'map' 参数在 THREE.PointCloudMaterial 中未定义
Forge Viewer Autodesk v7 THREE.Material: 'map' parameter is undefined in THREE.PointCloudMaterial
最终编辑:使用 THREE.PointCloudMaterial 在 Autodesk Forge Viewer v7 中被破坏。坚持 THREE.ShaderMaterial.
编辑:我正在使用的 Forge Viewer 具有 Three.js 版本 r71 (source) 的自定义版本,这就是我使用过时代码的原因。
EDIT2:我认为问题可能是因为 map 想使用 THREE.ImageUtils.loadTexture() 而不是 THREE.TextureLoader?当我使用 THREE.ImageUtils.loadTexture() 时,我得到一个 new problem 图像未定义的地方。猜猜它与回调函数有关?
EDIT3:THREE.Material: 'map' parameter is undefined
Petr 的回答消失了,但在 Forge Viewer 中仍然看不到纹理:
可能是与 WebGL RENDER WARNING: there is no texture bound to the unit 0
有关的问题?
代码(抱歉乱七八糟):
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);
编辑到此为止
我的目标是为我的 BoxGeometry 点云引入纹理。
每当我 运行 以下代码(或任何使用贴图作为纹理的代码)时,我都会在控制台中收到警告。
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 )
控制台输出:THREE.Material: 'map' parameter is undefined
r121 文档(我卡在 r71 上):
我的问题是,使用 PointCloudMaterial 是我的错吗?这是一个错误吗?我需要导入什么吗?
您的material创作应该
var material = new THREE.PointsMaterial( params );
不确定您为什么要使用 PointCloudMaterial。
此外,PointCloud 不是 Three.js 中的标准 class。您链接到的页面建议您使用积分:
var points = new THREE.Points( geometry, material );
THREE.Material: 'map' parameter is undefined
错误来自 three.js,它与这行代码有关:
map: new THREE.TextureLoader().load( '../data/toppng.com-particles-3000x2000.png' ),
three.js R71 中的 load 方法没有 return 任何东西。加载的纹理必须从回调函数中检索,例如,像这样:
var materialForShapes = new THREE.PointCloudMaterial({
map: ,
color: 0xffff00,
transparent: false,
opacity: 0.9,
size: 10,
});
new THREE.TextureLoader().load( '../data/toppng.com-particles-3000x2000.png', function onLoad(tex) {
materialForShapes.map = tex;
});
最终编辑:使用 THREE.PointCloudMaterial 在 Autodesk Forge Viewer v7 中被破坏。坚持 THREE.ShaderMaterial.
编辑:我正在使用的 Forge Viewer 具有 Three.js 版本 r71 (source) 的自定义版本,这就是我使用过时代码的原因。
EDIT2:我认为问题可能是因为 map 想使用 THREE.ImageUtils.loadTexture() 而不是 THREE.TextureLoader?当我使用 THREE.ImageUtils.loadTexture() 时,我得到一个 new problem 图像未定义的地方。猜猜它与回调函数有关?
EDIT3:THREE.Material: 'map' parameter is undefined
Petr 的回答消失了,但在 Forge Viewer 中仍然看不到纹理:
可能是与 WebGL RENDER WARNING: there is no texture bound to the unit 0
有关的问题?
代码(抱歉乱七八糟):
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);
编辑到此为止
我的目标是为我的 BoxGeometry 点云引入纹理。
每当我 运行 以下代码(或任何使用贴图作为纹理的代码)时,我都会在控制台中收到警告。
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 )
控制台输出:THREE.Material: 'map' parameter is undefined
r121 文档(我卡在 r71 上):
我的问题是,使用 PointCloudMaterial 是我的错吗?这是一个错误吗?我需要导入什么吗?
您的material创作应该
var material = new THREE.PointsMaterial( params );
不确定您为什么要使用 PointCloudMaterial。 此外,PointCloud 不是 Three.js 中的标准 class。您链接到的页面建议您使用积分:
var points = new THREE.Points( geometry, material );
THREE.Material: 'map' parameter is undefined
错误来自 three.js,它与这行代码有关:
map: new THREE.TextureLoader().load( '../data/toppng.com-particles-3000x2000.png' ),
three.js R71 中的 load 方法没有 return 任何东西。加载的纹理必须从回调函数中检索,例如,像这样:
var materialForShapes = new THREE.PointCloudMaterial({
map: ,
color: 0xffff00,
transparent: false,
opacity: 0.9,
size: 10,
});
new THREE.TextureLoader().load( '../data/toppng.com-particles-3000x2000.png', function onLoad(tex) {
materialForShapes.map = tex;
});