Three.js THREEJS-具有自定义UV映射的缓冲区几何体
定义缓冲几何体的UV映射时发生奇怪行为: 我知道,对于索引缓冲区几何体,我不需要重复顶点,可以重复使用它们-因此对于10x10个池的矩阵,我用两种不同的纹理材质连接200个三角形 当我要应用UV贴图时,问题开始出现:Three.js THREEJS-具有自定义UV映射的缓冲区几何体,three.js,Three.js,定义缓冲几何体的UV映射时发生奇怪行为: 我知道,对于索引缓冲区几何体,我不需要重复顶点,可以重复使用它们-因此对于10x10个池的矩阵,我用两种不同的纹理材质连接200个三角形 当我要应用UV贴图时,问题开始出现: var gg=new THREE.BufferGeometry(),vtx=[],uv=[],fc=[[],[]],mm=[ material1, material2 ]; for(var y=0 ; y<11 ; y++) for(var x=0 ;
var gg=new THREE.BufferGeometry(),vtx=[],uv=[],fc=[[],[]],mm=[
material1,
material2
];
for(var y=0 ; y<11 ; y++)
for(var x=0 ; x<11 ; x++) {
vtx.push(x-5,0,y-5);
if(x&&y) {
var p=(vtx.length/3)-1;
fc[(x%2)^(y%2)].push(
// Incides
// A B C
p, p-11, p-1,
p-1, p-11, p-12
);
uv.push(
// UV mapping (suppose per triangle??!)
// A B C
1,0, 1,1, 0,1,
0,1, 1,1, 0,0
);
}
}
Array.prototype.push.apply(fc[0],fc[1]); gg.setIndex(fc[0]);
gg.addAttribute('position',new THREE.Float32BufferAttribute(vtx,3));
gg.addAttribute('uv',new THREE.Float32BufferAttribute(uv,2));
gg.computeVertexNormals();
gg.addGroup(0,300,0);
gg.addGroup(300,300,1);
scene.add(new THREE.Mesh(gg,mm));
var gg=new THREE.BufferGeometry(),vtx=[]、uv=[]、fc=[]、[]、mm=[
材料1,
材料2
];
对于(var y=0;y我认为,如果你想要逐面贴图,那么你可能也必须复制顶点。基本上,所有东西都有一个唯一的顶点+法线+uv组合。否则你需要多个索引缓冲区,一个用于顶点,一个用于法线,一个用于uv。我倾向于不太担心顶点数据的数量。真正影响性能的是d原始调用。大多数GPU每帧可以处理超过1m个顶点,但最多可以处理300-1000个绘制调用。我过于简单化了,但这是一个大概的结果。是的,这确实有效(在中有效),但需要更多顶点(可能会影响更复杂网格中的内存?)这里的长度不是每个变量,而是每个顶点,所以保持300。