我无法在从搅拌机导出的 json 模型中显示纹理。
我有一个标准的搅拌机立方体。借助动画使他爬行。没有骨架。只需移动两个关键帧。我通过纹理面板(类型图像或电影)填充了纹理——只是一张图片。并以 JSON 格式上传所有内容。结果是这样的:
{
"materials":[{
"blending":1,
"DbgColor":15658734,
"DbgName":"Material.001",
"depthTest":true,
"DbgIndex":0,
"specularCoef":50,
"wireframe":false,
"shading":"phong",
"depthWrite":true,
"mapDiffuseWrap":["repeat","repeat"],
"transparent":false,
"visible":true,
"colorEmissive":[0,0,0],
"mapDiffuseRepeat":[1,1],
"colorSpecular":[0.005668,0.007784,0.5],
"colorDiffuse":[0.03412,0.048951,0.757333],
"opacity":1,
"mapDiffuseAnisotropy":1,
"doubleSided":false,
"mapDiffuse":"HUESeR6h7C4.jpg"
}],
"morphTargets":[{
"name":"animation_000000",
"vertices":[1.37341,-1.02254,1.35629,1.37341,0.977456,1.35629,1.37341,-1.02254,-0.643712,1.37341,0.977455,-0.643712,3.37341,-1.02254,1.35629,3.37341,0.977456,1.35629,3.37341,-1.02254,-0.643712,3.37341,0.977455,-0.643712]
}, ... ],
"vertices":[1.37979,-1.01632,1.3379,1.37979,0.983676,1.3379,1.37979,-1.01632,-0.662102,1.37979,0.983676,-0.662102,3.37979,-1.01632,1.3379,3.37979,0.983676,1.3379,3.37979,-1.01632,-0.662102,3.37979,0.983676,-0.662102],
"uvs":[],
"bones":[],
"influencesPerVertex":2,
"animations":[],
"skinWeights":[],
"skinIndices":[],
"normals":[-1,0,0,0,-0,-1,1,0,0,0,0,1,0,-1,0,0,1,-0],
"faces":[35,0,1,3,2,0,0,0,0,0,35,2,3,7,6,0,1,1,1,1,35,6,7,5,4,0,2,2,2,2,35,1,0,4,5,0,3,3,3,3,35,4,0,2,6,0,4,4,4,4,35,7,3,1,5,0,5,5,5,5],
"metadata":{
"type":"Geometry",
"materials":1,
"morphTargets":250,
"vertices":8,
"uvs":0,
"bones":0,
"version":3,
"generator":"io_three",
"normals":6,
"faces":6
}
}
通过 JSONloader 将生成的 JSON 和带有纹理和动画的图像加载到 three.js 中
let mixer = new THREE.AnimationMixer( scene );
let clock = new THREE.Clock();
jsonLoader.load("./objects/untitled.json",
function( geometry, materials ) {
var material = materials[0];
material.morphTargets = true;
let mesh = new THREE.Mesh(geometry, material)
mesh.scale.set(5,5,5)
mesh.position.set(0,140,0)
scene.add(mesh);
mixer.clipAction( geometry.animations[ 0 ], mesh ).setDuration( 3 ).play();
}
)
此代码播放动画但不渲染纹理。仅显示纹理前在搅拌器中设置的材质。
那些。这个蓝色立方体是一个动画模型。它按预期移动,但是在纹理处理时在搅拌机中叠加在其上的图像没有显示在 THREE.js 中。仅显示搅拌机材料。导出时值得将材质的颜色改为红色,立方体变成红色,但图片还是不见了。控制台没有写任何关于此的内容。大多数解决方案都是为遗留方法编写的。被杀了2天,尝试了所有可能的方法。我不明白我在哪个阶段有错误。导出模型时,还是使用 Three.js 时?请帮帮我。
一切都解决了。我用这个视频来填充纹理 - https://www.youtube.com/watch?v=1AbJ0V5kg5Q 之前没有使用 UV,显然这就是原因
导出纹理动画时的复选框如下所示: