SceneKit关于贴图

SceneKit 给材质贴图。

1,最简单的一种方法,直接打开dae 或者 scn 文件直接设置

如上图,这个dae 文件中只有一个几何体,几何体中只有一个材质球,然后设置材质球的diffuse 属性就可以了。

2,代码设置,还是针对这个最简单的dae 文件

ceilNode.geometry.firstMaterial.diffuse.contents = [UIColor redColor];   //可以设置颜色

ceilNode.geometry.firstMaterial.diffuse.contents = @"20151026N222-ZW-DMAX_MS_400-280-390_N_MUV-0_LYX.jpg";   //可以设置图片(名字)

ceilNode.geometry.firstMaterial.diffuse.contents =  [UIImage imageNamed:@"20151026N222-ZW-DMAX_MS_400-280-390_N_MUV-0_LYX.jpg"];   //可以设置图片

上面是最简单的情况,只有一个材质球,我们也可以设置多个材质球,比如说长方体的六个面,每个面的图案都不一样,那我们我们使用多个材质球来实现此效果

SCNMaterial *allMaterial = [SCNMaterial new];
allMaterial.diffuse.contents = @"allwall.png";
SCNMaterial *smallMaterial1 = [SCNMaterial new];
smallMaterial1.diffuse.contents =@"bottomWall.png";

rightwall.geometry.materials = @[smallMaterial1,allMaterial,[smallMaterial1 copy],allMaterial,allMaterial,allMaterial];

长方体每个面的位置:@[front,right,back,left,top,bottom];

出现的问题:

很明显,两个的窗户不一致,在现实中是不合理的,所以我们需要对贴图做变换

我们调整back 这个材质球的贴图:

NSArray *allMaterial = rightwall.geometry.materials;
SCNMaterial *smallMaterial2= allMaterial[1];
smallMaterial2.diffuse.contentsTransform = SCNMatrix4MakeScale(-1,1,1);  //就是这句,调整一下贴图的方向
smallMaterial2.diffuse.wrapT = SCNWrapModeRepeat;
smallMaterial2.diffuse.wrapS = SCNWrapModeRepeat;

results matching ""

    No results matching ""