今天简单说一下 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文件。

iOS - Scenekit3D引擎初探之 - 给材质贴图的更多相关文章

  1. iOS - Scenekit3D引擎初探之 - 导出DAE文件(3Dmax为例)

    DAE文件格式是3D交互文件格式,一般用于多个图形程序之间交换数字数据,Autodesk专有并在COLLADA(COLLAborative Design Activity)基础上改进创建的XML框架的 ...

  2. iOS - Scenekit3D引擎初探之 - 导入模型+上传服务器+下载并简单设置

    SceneKit是ios8之后苹果推出了一个3D模型渲染框架. SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过.这篇文章只针对.da ...

  3. 最全的iOS物理引擎demo

    概述 最全的iOS物理引擎demo,实现重力.碰撞.推力.摆动.碰撞+重力.重力弹跳.仿摩拜单车贴纸效果.防iMessage滚动效果.防百度外卖首页重力感应等效果! 详细 代码下载:http://ww ...

  4. 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移

    解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...

  5. TOJ3039: 材质贴图

    3039: 材质贴图  Time Limit(Common/Java):1000MS/3000MS     Memory Limit:65536KByteTotal Submit: 46       ...

  6. iOS - SceneKit 3D引擎初探

    最近到处搜集资料研究3D最后还是决定锁定OC框架,找到的学习资料随后慢慢整理 SceneKit 是一个OC 框架,开始之前,先熟悉一下SceneKit 的三维坐标系: 很清楚的看到,SceneKit ...

  7. cocos2dx 3.2中的物理引擎初探(一)

    cocos2dx在设计之初就集成了两套物理引擎,它们是box2d和chipmunk.我目前使用的是最新版的cocos2dx 3.2.引擎中默认使用的是chipmunk,如果想要改使用box2d的话,需 ...

  8. 前端3D引擎-Cesium自定义动态材质

    本文代码基于Vue-cli4和使用WebGL的地图引擎Cesium,主要内容为三维场景下不同对象的动态材质构建. 参考了很多文章,链接附在文末. 为不同的几何对象添加动态材质 不知道这一小节的名称概况 ...

  9. 【MySQL】TokuDB引擎初探(MySQL升级为Percona,MySQL升级为MariaDB)

    参考:http://blog.sina.com.cn/s/blog_4673e6030102v46l.html 参考:http://hcymysql.blog.51cto.com/5223301/14 ...

随机推荐

  1. [转][osg]探索未知种族之osg类生物【目录】

    作者:3wwang 原文链接:http://www.3wwang.cn/html/article_58.html 前序 探索未知种族之osg类生物---起源 ViewBase::frame函数中的Vi ...

  2. python学习导图

  3. typeScript中的数据类型

    /* typeScript中的数据类型 typescript中为了使编写的代码更规范,更有利于维护,增加了类型校验,在typescript中主要给我们提供了以下数据类型 布尔类型(boolean) 数 ...

  4. k8s、jenkins集成

    参考连接 http://www.uml.org.cn/jchgj/201804252.asp https://huanqiang.wang/2018/03/30/Jenkins-Gitlab-Kube ...

  5. LODOP中设置设置图片平铺水印,超文本透明

    之前的博文:LODOP中平铺图片 文本项Repeat. 该博文中是平铺的图片,上面是文本.如果是图片add_print_image和add_print_text纯文本,这两个打印项设计的,可以直接通过 ...

  6. [LintCode] 619 Binary Tree Longest Consecutive Sequence III 二叉树最长连续序列 III

    Given a k-ary tree, find the length of the longest consecutive sequence path. The path could be star ...

  7. git的使用学习(一)git的简介和安装

    Git简介 Git是什么? Git是目前世界上最先进的分布式版本控制系统(没有之一). Git有什么特点?简单来说就是:高端大气上档次! 那什么是版本控制系统? 如果你用Microsoft Word写 ...

  8. 常见问题:MySQL/事务隔离

    数据库并行产生的问题 A事务撤销时,将B事务更改的数据撤销. A事务提交时,将B事务更改的同行数据覆盖. 脏读:A事务读取到了B事务未提交的数据. 不可重复读:A事务中同查询语句不幂等,读到已更新数据 ...

  9. centos umount 卸载出错

    target is busy. (In some cases useful info about processes that use the device ) or fuser()) 解决 fuse ...

  10. 3.wxml特性之数据绑定

    WXML----显示 {{变量名}} JS----------变量名:”变量值” 所有属性和组件都必须小写