hello ,大家好,我是Roc.Tian,最近一直在研究苹果自家的3D 引擎 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];

自己的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 3D引擎 SceneKit 开发(2) --贴图篇相关推荐

  1. ios 3D引擎 SceneKit 开发(3) --使用3dmax导出DAE文件

    hello ,大家好,我是Roc.Tian,最近一直在研究苹果自家的3D 引擎 SceneKit ,适当写写博客,总结一下,与大家分享一下,也希望跟大家交流,共同进步. 这其实是建模人员该了解的问题, ...

  2. 第一章 安装Ogre 3D引擎

    第一章 安装Ogre 3D引擎 想要学习并且使用 Ogre,就要先下载并安装它. 在这章,我们将会学习到: 1. 下载并安装 Ogre 3D 引擎 2. 配置好 Ogre 3D 引擎的开发环境 3. ...

  3. qt5.9.0调试如何查看变量的值_从0开发3D引擎(四):搭建测试环境

    大家好,本文介绍了3D引擎的测试方法,搭建了本地的测试环境. 上一篇博文 wonder-yyc:从0开发3D引擎(三):搭建开发环境​zhuanlan.zhihu.com 下一篇博文 wonder-y ...

  4. 十五开源的Andr​​oid(2D或3D)Android开发游戏引擎

    Android游戏开发Android游戏引擎是非常有用的,这里是10个开源的Andr​​oid(2D或3D)Android开发的游戏引擎. 1.  Rokon:Android的开源2D游戏引擎 Rok ...

  5. Unity 中国区总经理符国新:3D引擎开发

    [提要]  由成都市人民政府.移动游戏发展联盟.中国移动通信联合会主办,人民网.腾讯网.当乐网共同协办的"2012移动游戏大会"12月20日在成都川投国际酒店隆重举行.Unity ...

  6. 用函数式编程,从0开发3D引擎和编辑器(三):初步需求分析

    大家好,本文介绍了Wonder的高层需求和本系列对应的具体功能点. 确定Wonder高层需求 业务目标 Wonder是web端3D开发的解决方案,包括引擎.编辑器,致力于打造开放.分享.互助的生态. ...

  7. 【通知】▁▂▃ Himi 最新著作《iOS游戏编程之从零开始—Cocos2d-x与cocos2d引擎游戏开发》★书籍源码+第4/5/6样章★-免费下载★ ▃▂▁

    2013年新年,Himi的第二本著作:<iOS游戏编程之从零开始-Cocos2d-x与cocos2d引擎游戏开发>一书正式发售: (大家可以到新华书店.淘宝.拍拍.当当.亚马逊等进行购买) ...

  8. 游戏开发--开源软件7--xith3D(java 3D引擎)

    2019独角兽企业重金招聘Python工程师标准>>> Xith3D是高性能的Java 3D引擎,主要面向3D游戏,数据可视化,三维场景原型等. 最突出的特点是基于scenegrap ...

  9. Unity Pro 2019 for mac(3D游戏动画开发工具) v2019.2.21f1

    想要一款功能强大的3D游戏动画开发工具?Unity 2019能够轻松创建诸如三维视频游戏.建筑可视化.实时三维动画等类型互动内容的多平台的综合型游戏开发工具,以及一个全面整合的专业游戏引擎,用于创建诸 ...

最新文章

  1. 如何用 ndctl/ipmctl 管理工具 配置不同访问模式的pmem设备
  2. 为什么明星公司会选择Go作为编程语言?
  3. 信号与系统第四章-第六章习题易错点整理
  4. 大数据发行版本+组件中的竞品/等同地位关系(持续更新中)
  5. ckeditor 框架分析 几个核心“人物”
  6. php w 框架叫什么意思,框架是什么,为啥要用框架. 框架解决了什么
  7. EBMIDE——打印格式管理
  8. Redis系列之key操作命令与Redis中的事务详解(六)
  9. Java概 述(新手专区)
  10. android闹铃唤醒软件,温柔唤醒闹钟app_温柔的闹钟铃声有哪些_华为智能闹钟智能唤醒-多特软件站安卓网...
  11. Linux 虚拟内存管理思维导图
  12. 为开发者而生的Twig(上)-Twig使用指南
  13. 2020鼠年正月十一3000+股跌停后再次补仓
  14. Linux抓包和分析
  15. 帝国理工学院计算机科学夲科生数,帝国理工学院计算机科学信息汇总,无背景要求,不需要GRE...
  16. 计算机二级---关键必要掌握重点
  17. 天下霸图进度汇报20200329
  18. Ubuntu 18.04上使用snort3搭建NIDS(二)| 配置篇
  19. 最短路——【模板】单源最短路径(弱化版)(dijkstra)
  20. 关于阿里云ECS服务器提示高危漏洞问题的处理

热门文章

  1. vueuse(函数库)的基本使用,宝藏神器,务必收藏
  2. python2 print 中文_python怎么print汉字
  3. ROS新手教程【一】ROS开源机器人操作系统简介
  4. Python脚本批量读取哨兵2号(Sentinel2)影像并另存为Geotiff格式
  5. Jmeter-监听器jp@gc
  6. Python 建立虚拟环境
  7. google浏览器突然用不了【F12】
  8. 基于滑模控制的PMSM直接转矩控制仿真模型
  9. Coursera SQL for Data Science - Notes
  10. vue3 antd项目实战——Form表单的提交与校验【v-model双向绑定input输入框、form表单数据,动态校验规则】