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文件。
iOS - Scenekit3D引擎初探之 - 给材质贴图的更多相关文章
- iOS - Scenekit3D引擎初探之 - 导出DAE文件(3Dmax为例)
DAE文件格式是3D交互文件格式,一般用于多个图形程序之间交换数字数据,Autodesk专有并在COLLADA(COLLAborative Design Activity)基础上改进创建的XML框架的 ...
- iOS - Scenekit3D引擎初探之 - 导入模型+上传服务器+下载并简单设置
SceneKit是ios8之后苹果推出了一个3D模型渲染框架. SceneKit现在可以支持有限的几种模型,截止到我写这篇文章为止似乎只有.dae和.abc后一种模型我没有使用过.这篇文章只针对.da ...
- 最全的iOS物理引擎demo
概述 最全的iOS物理引擎demo,实现重力.碰撞.推力.摆动.碰撞+重力.重力弹跳.仿摩拜单车贴纸效果.防iMessage滚动效果.防百度外卖首页重力感应等效果! 详细 代码下载:http://ww ...
- 解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移
解决iOS中 tabBarItem设置图片(image+title切图在一起)时造成的图片向上偏移 解决办法1:设置tabBarItem的imageInsets属性 代码示例: childContro ...
- TOJ3039: 材质贴图
3039: 材质贴图 Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit: 46 ...
- iOS - SceneKit 3D引擎初探
最近到处搜集资料研究3D最后还是决定锁定OC框架,找到的学习资料随后慢慢整理 SceneKit 是一个OC 框架,开始之前,先熟悉一下SceneKit 的三维坐标系: 很清楚的看到,SceneKit ...
- cocos2dx 3.2中的物理引擎初探(一)
cocos2dx在设计之初就集成了两套物理引擎,它们是box2d和chipmunk.我目前使用的是最新版的cocos2dx 3.2.引擎中默认使用的是chipmunk,如果想要改使用box2d的话,需 ...
- 前端3D引擎-Cesium自定义动态材质
本文代码基于Vue-cli4和使用WebGL的地图引擎Cesium,主要内容为三维场景下不同对象的动态材质构建. 参考了很多文章,链接附在文末. 为不同的几何对象添加动态材质 不知道这一小节的名称概况 ...
- 【MySQL】TokuDB引擎初探(MySQL升级为Percona,MySQL升级为MariaDB)
参考:http://blog.sina.com.cn/s/blog_4673e6030102v46l.html 参考:http://hcymysql.blog.51cto.com/5223301/14 ...
随机推荐
- 【转载】 Tensorflow中padding的两种类型SAME和VALID
原文地址: https://blog.csdn.net/jasonzzj/article/details/53930074 -------------------------------------- ...
- osg编译日志-release
1>------ 已启动生成: 项目: ZERO_CHECK, 配置: Release x64 ------1> Checking Build System1> CMake does ...
- Java Utils工具类大全
源码和jar见:https://github.com/evil0ps/utils #Java Utils --- 封装了一些常用Java操作方法,便于重复开发利用. 另外希望身为Java牛牛的你们一起 ...
- extends 类的继承 / super关键字,调用继承类里面的函数和变量
Son 继承Father 当其他脚本想调用 Father类里面的变量 or 方法 可以把 Son r=new Son() 等价于 Father r=new Father() 注意: 函数只能单继承 ...
- Laya和白鹭的高亮文字 (textFlow)
版本2.1.1.1 游戏中用的高亮文字,例如下图 "使用 2钻石 可获得金币",2钻石是不同颜色高亮的. 白鹭的高亮文字有文本样式 txt.textFlow = <Array ...
- 修改excel图表中的“系列一”
修改excel图表中的"系列一" 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献 https://zhidao.baidu.com/question/153915 ...
- 【443】Tweets Analysis Q&A
[Question 01] When converting Tweets info to csv file, commas in the middle of data (i.e. locati ...
- 迅速生成项目-vue-nuxtjs
一.介绍nuxtjs 后端渲染开源库. 参考链接:https://nuxtjs.org/guide 语言:js 模版:vue 二.从脚手架生成项目(方案A) 推荐指数:
- MSP430FR6972驱动模块模组调试
1. 说是会进入晶振的中断 #pragma vector=UNMI_VECTOR 2. 打了断点没进入,猜测是串口被世龙修改后,串口波特率不对,重新改回原来的,AT+NATSPEED?一直发送这个命令 ...
- String类的构造函数,析构函数、拷贝构造函数和赋值函数
(1)构造函数 String::String(const char *str) { if(str==NULL) { m_data = new char[1]; *m_data = ‘\0’; } el ...