Three.js UV地图怪异

时间:2014-05-16 17:58:00

标签: three.js blender

我在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" : [],

"动画" :[]

}`

1 个答案:

答案 0 :(得分:0)

我在这里看到了一些事情。

我认为你正在进行某种朗伯照明,(一个顶点周围的亮度)并且没有UV的表示。

你的脸被翻转,面朝错误的方向。法线也在点之间取平均值,因此框阴影的原因更像是blob而不是实心角对象。您可以从数字中看到,框法线应该具有类似(0,0,1)(1,0,0)的值,因为您的框与xyz对齐(前两个顶点告诉它)。你的法线有(.57,.57,.57),它应该是一个单位向量,主立方对角线 - 三个面的平均值。

您需要在three.js导出器中查找选项,或者您可以使用与此相同的选项来获取此选项,但可以在blender中手动翻转面。如果没有现实的例子,很难确切地说出发生了什么,因为一种可能的情况可能是你的面孔朝向正确的方式,但法线被翻转会导致额外的问题。