Three.js threejs gltf alpha模式混合选项在某些角度下不起作用
我有一个gltf,其中我在矩形网格上应用png纹理。我有一个矩形png和圆形png。矩形节点位于z=0.01处,圆形节点位于z=0.0处。材质使用的alpha模式为“混合”。材料是双面的 GLTF } PNGs 我使用的是ThreeJs gltf查看器。 在某些角度混合效果很好,但当我围绕某些角度旋转时,混合不起作用。截图Three.js threejs gltf alpha模式混合选项在某些角度下不起作用,three.js,blend,gltf,Three.js,Blend,Gltf,我有一个gltf,其中我在矩形网格上应用png纹理。我有一个矩形png和圆形png。矩形节点位于z=0.01处,圆形节点位于z=0.0处。材质使用的alpha模式为“混合”。材料是双面的 GLTF } PNGs 我使用的是ThreeJs gltf查看器。 在某些角度混合效果很好,但当我围绕某些角度旋转时,混合不起作用。截图 有人能向我解释一下这种行为,以及我如何在各个角度实现正确的混合。如果这是三个独立的节点,并且它们都位于0,0,0,则可能存在排序问题。GLTF是可读的,但我对规范不太熟悉
有人能向我解释一下这种行为,以及我如何在各个角度实现正确的混合。如果这是三个独立的节点,并且它们都位于0,0,0,则可能存在排序问题。GLTF是可读的,但我对规范不太熟悉,无法说出发生了什么。文件中提到的没有翻译字段的节点可能都位于0,0,0
不管是哪种方式,如果要保持排序,解决方法是为网格指定不同的yourMesh.renderOrder=yourDesiredOrder。所以对于这些元素,你可以设置1,2,3,4。。。当你想让他们绘制/告诉排序来考虑这些权重。p> 我无法在上述查看器或Sketchfab中加载您的glTF。我想你发布的JSON是不完整的。你的glTF文件没有任何访问器或缓冲区,也没有用来保存顶点数据的bin文件。很抱歉,我刚刚发布了gltf的相关内容,只是想了解一下gltf的内容,我想这就足够了。但现在我添加了完整的gltf。谢谢。虽然gltf很容易阅读,但一些实时代码在这里会有所帮助,如果我能记录你的三个实例,我会有更好的理解。场景80%确定答案会解决这个问题。是的,设置renderOrder可以解决问题,但我可以在运行时这样做,但其他gltf加载程序将不知道renderOrder,因为gltf格式中没有提供。所以我认为这是gltf formatno的局限性,这是一般图形的局限性,可能还有3.js。这不容易分类
{
"scenes" : [
{
"nodes" : [
0
]
}
],
"nodes" : [
{
"name" : "Node_0",
"children" : [
1,
3
]
},
{
"name" : "Symbol 2",
"children" : [
2
],
"translation" : [
240.25,
-126.300003,
0
]
},
{
"name" : "Node_2",
"mesh" : 0,
"scale" : [
0.656657,
0.656657,
1
]
},
{
"name" : "Symbol 1",
"children" : [
4
],
"translation" : [
170,
-89.050003,
0
]
},
{
"name" : "Node_4",
"mesh" : 1,
"translation" : [
0,
0,
-0.01
],
"scale" : [
2.059968,
1.399979,
1
]
}
],
"meshes" : [
{
"primitives" : [
{
"attributes" : {
"POSITION" : 1,
"TEXCOORD_0" : 2
},
"indices" : 0,
"material" : 0
}
]
},
{
"primitives" : [
{
"attributes" : {
"POSITION" : 1,
"TEXCOORD_0" : 2
},
"indices" : 0,
"material" : 1
}
]
}
],
"buffers" : [
{
"uri" : "data:application/octet-stream;base64,AQAAAAAAAAADAAAAAwAAAAIAAAABAAAAAAAAAAAAAIAAAAAAAAAAAAAAyMIAAAAAAADIQgAAyMIAAAAAAADIQgAAAIAAAAAAAAAAAAAAAAAAAAAAAACAPwAAgD8AAIA/AACAPwAAAAAAAAAAq6oqPacaKD+nGig/AACAP6caKD+nGig/AACAPwAAAAAAAAAAAAAAgAAAAAAAAAAAAAAAAAAAAAAAAACAAACAPwAAAACrqio9AACAPwAAgD8AAIA/AACAPwAAgD8AAIA/AAAAAABAcEOamfzCAAAAAAAAAAAAAAAAAAAAAAAAAIAAAIA/AAAAAKuqKj2G1gNAfzKzPwAAgD+G1gNAfzKzPwAAgD8AAAAAAAAAAAAAAIAK1yO8AAAAAAAAAAAAAAAAAAAAgAAAgD8AAAAAq6oqPQAAgD8AAIA/AACAPwAAgD8AAIA/AACAPwAAAAAAACpDmhmywgAAAAAAAAAAAAAAAAAAAAAAAACAAACAPw==",
"byteLength" : 376
}
],
"bufferViews" : [
{
"buffer" : 0,
"byteOffset" : 0,
"byteLength" : 24,
"target" : 34963
},
{
"buffer" : 0,
"byteOffset" : 24,
"byteLength" : 48,
"target" : 34962
},
{
"buffer" : 0,
"byteOffset" : 72,
"byteLength" : 32,
"target" : 34962
}
],
"accessors" : [
{
"name" : "accessor_0",
"bufferView" : 0,
"byteOffset" : 0,
"componentType" : 5125,
"count" : 6,
"type" : "SCALAR",
"max" : [
3
],
"min" : [
0
]
},
{
"name" : "accessor_1",
"bufferView" : 1,
"byteOffset" : 0,
"componentType" : 5126,
"count" : 4,
"type" : "VEC3",
"max" : [
100,
0,
0
],
"min" : [
0,
-100,
0
]
},
{
"name" : "accessor_2",
"bufferView" : 2,
"byteOffset" : 0,
"componentType" : 5126,
"count" : 4,
"type" : "VEC2",
"max" : [
1,
1
],
"min" : [
0,
0
]
}
],
"materials" : [
{
"pbrMetallicRoughness" : {
"baseColorTexture" : {
"index" : 0
}
},
"alphaMode" : "BLEND",
"doubleSided" : true
},
{
"pbrMetallicRoughness" : {
"baseColorTexture" : {
"index" : 1
}
},
"alphaMode" : "BLEND",
"doubleSided" : true
}
],
"samplers" : [
{
"magFilter" : 9729,
"minFilter" : 9987,
"wrapS" : 33071,
"wrapT" : 33071
}
],
"textures" : [
{
"sampler" : 0,
"source" : 0
},
{
"sampler" : 0,
"source" : 1
}
],
"images" : [
{
"uri" : "Image0.png"
},
{
"uri" : "Image1.png"
}
],
"asset" : {
"version" : "2.0"
}