我在Blender中使用UV贴图创建简单的框对象,然后将其导出为Three.js JSON,但在渲染时它会显示一些奇怪的贴图,就像在框内部的映射,而不是在外面..!
https://drive.google.com/file/d/0B1zwfFhX2lbYQS1PeUgtQ2RjVXM/edit?usp=sharing
JSON代码是:`{
"metadata" :
{
"formatVersion" : 3.1,
"generatedBy" : "Blender 2.7 Exporter",
"vertices" : 8,
"faces" : 6,
"normals" : 8,
"colors" : 0,
"uvs" : [22],
"materials" : 1,
"morphTargets" : 0,
"bones" : 0
},
"scale" : 1.000000,
"materials" : [ {
"DbgColor" : 15658734,
"DbgIndex" : 0,
"DbgName" : "Material",
"blending" : "NormalBlending",
"colorAmbient" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorDiffuse" : [0.6400000190734865, 0.6400000190734865, 0.6400000190734865],
"colorEmissive" : [0.0, 0.0, 0.0],
"colorSpecular" : [0.5, 0.5, 0.5],
"depthTest" : true,
"depthWrite" : true,
"mapDiffuse" : "cube.001.png",
"mapDiffuseWrap" : ["repeat", "repeat"],
"shading" : "Lambert",
"specularCoef" : 50,
"transparency" : 1.0,
"transparent" : false,
"vertexColors" : false
}],
"vertices" : [1,0.2,-1,1,0.2,1,-1,0.2,1,-0.999999,0.2,-1,1,-0.2,-1,0.999999,-0.2,1,-1,-0.2,1,-1,-0.2,-1],
"morphTargets" : [],
"normals" : [-0.577349,-0.577349,0.577349,-0.577349,-0.577349,-0.577349,0.577349,-0.577349,-0.577349,0.577349,-0.577349,0.577349,-0.577349,0.577349,0.577349,0.577349,0.577349,0.577349,0.577349,0.577349,-0.577349,-0.577349,0.577349,-0.577349],
"colors" : [],
"uvs" : [[0.498471,0,0.5,0.498471,0.001529,0.5,0,0.001529,1,0.001529,0.998471,0.5,0.501529,0,0.601224,0.500306,0.700918,0.5,0.702447,0.998471,0.602753,0.998777,0.80367,0.500306,0.903365,0.5,0.904894,0.998471,0.8052,0.998776,0.599694,0.998777,0.5,0.998471,0.501529,0.5,0.80367,0.998471,0.703976,0.998777,0.702447,0.500306,0.802141,0.5]],
"faces" : [43,0,1,2,3,0,0,1,2,3,0,1,2,3,43,4,7,6,5,0,4,5,1,6,4,5,6,7,43,0,4,5,1,0,7,8,9,10,0,4,7,1,43,1,5,6,2,0,11,12,13,14,1,7,6,2,43,2,6,7,3,0,15,16,17,7,2,6,5,3,43,4,0,3,7,0,18,19,20,21,4,0,3,5],
"bones" : [],
"skinIndices" : [],
"skinWeights" : [],
"动画" :[]
}`
答案 0 :(得分:0)
我在这里看到了一些事情。
我认为你正在进行某种朗伯照明,(一个顶点周围的亮度)并且没有UV的表示。
你的脸被翻转,面朝错误的方向。法线也在点之间取平均值,因此框阴影的原因更像是blob而不是实心角对象。您可以从数字中看到,框法线应该具有类似(0,0,1)(1,0,0)的值,因为您的框与xyz对齐(前两个顶点告诉它)。你的法线有(.57,.57,.57),它应该是一个单位向量,主立方对角线 - 三个面的平均值。
您需要在three.js导出器中查找选项,或者您可以使用与此相同的选项来获取此选项,但可以在blender中手动翻转面。如果没有现实的例子,很难确切地说出发生了什么,因为一种可能的情况可能是你的面孔朝向正确的方式,但法线被翻转会导致额外的问题。