iOS - Scenekit3D引擎初探之 - 给材质贴图

今天简单说一下 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];

自己的Demo 中我创建了一面墙,但也发现了一个问题,如下图:

这里写图片描述

这里写图片描述

很明显,两个的窗户不一致,在现实中是不合理的,所以我们需要对贴图做变换。 
我们调整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; 

 

SCNMaterial 还有好多属性,大家可自行去看官方文档。

OK,简单的贴图就简单说到这了。

但实际情况是,我们经常会用到复杂的模型,里面好多个几何体,一个几何体又含有很多个材质球,这样就会有很多张贴图,如果采用上面的方法,自己去贴图,会很麻烦。 
其实建模人员已经帮你贴好图了。以后可能就会遇到到如何让建模人员给你导出适合SceneKit 使用的DAE文件。

转载于:https://www.cnblogs.com/baitongtong/p/5885619.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值