系统自带的3D模型控件
先自定义SCNView和SCNScene用来作为模型展示的view和场景。
@property (nonatomic,strong) SCNView *QFSceneView;
@property (nonatomic,strong) SCNScene *QFSenePlace;
//声明3D场景self.QFSceneView = [[SCNView alloc]init];_QFSceneView.allowsCameraControl = YES;//用户可以控制摄像机_QFSceneView.showsStatistics = YES;//控制下方的统计栏是否显示[self.view addSubview:_QFSceneView];_QFSceneView.sd_layout.spaceToSuperView(UIEdgeInsetsMake(NavBarHeight, 0, 0, 0));//声明场景中的模型对象self.QFSenePlace = [SCNScene scene];_QFSceneView.scene = _QFSenePlace;_QFSceneView.autoenablesDefaultLighting = true;
将系统的3D模型控件放到根节点处展示出来
//构建3D模型self.createNode = [[CreateTreeNode alloc]init];
SCNNode *_model = [_createNode createTreeModel];[_QFSenePlace.rootNode addChildNode:model];
下面开始介绍绘制的模型结构
1.绘制方块
SCNNode *present = [SCNNode nodeWithGeometry:[SCNBox boxWithWidth:1 height:1 length:1 chamferRadius:0]];present.geometry.firstMaterial.diffuse.contents = QFBlueColor;present.position = SCNVector3Make(2, -2, 2);present.name = @"树下面的方块";[_model addChildNode:present];
2.绘制SCNPyramid
SCNNode *pyramidNode = [SCNNode nodeWithGeometry:[SCNPyramid pyramidWithWidth:2 height:2 length:2]];pyramidNode.geometry.firstMaterial.diffuse.contents = QFYellowColor;pyramidNode.position = SCNVector3Make(-2, -2, -2);pyramidNode.name = @"三角锥";[_model addChildNode:pyramidNode];
3.绘制SCNSphere
SCNNode *sphereNode = [SCNNode nodeWithGeometry:[SCNSphere sphereWithRadius:1]];sphereNode.geometry.firstMaterial.diffuse.contents = QFRedColor;sphereNode.position = SCNVector3Make(-2, -1, 2);sphereNode.name = @"球体";[_model addChildNode:sphereNode];
4.绘制SCNCone
SCNNode *coneNode = [SCNNode nodeWithGeometry:[SCNCone coneWithTopRadius:0.5 bottomRadius:1 height:2]];coneNode.geometry.firstMaterial.diffuse.contents = QFBlackColor;coneNode.position = SCNVector3Make(2, -1, -2);coneNode.name = @"锥柱体";[_model addChildNode:coneNode];
5.绘制SCNTube
SCNNode *tubeNode = [SCNNode nodeWithGeometry:[SCNTube tubeWithInnerRadius:0.5 outerRadius:1 height:2]];tubeNode.geometry.firstMaterial.diffuse.contents = QFGrayColor;tubeNode.position = SCNVector3Make(3, 3, 3);tubeNode.name = @"环柱体";[_model addChildNode:tubeNode];
6.绘制SCNCapsule
SCNNode *capsuleNode = [SCNNode nodeWithGeometry:[SCNCapsule capsuleWithCapRadius:1 height:2]];capsuleNode.geometry.firstMaterial.diffuse.contents = QFDarkGrayColor;capsuleNode.position = SCNVector3Make(3, 3, -3);capsuleNode.name = @"跟球看着一样";[_model addChildNode:capsuleNode];
7.绘制SCNTorus
SCNNode *torusNode = [SCNNode nodeWithGeometry:[SCNTorus torusWithRingRadius:1 pipeRadius:0.5]];torusNode.geometry.firstMaterial.diffuse.contents = QFLightGrayColor;torusNode.position = SCNVector3Make(-3, 3, 3);torusNode.name = @"游泳圈";[_model addChildNode:torusNode];
8.绘制SCNText
SCNText *scnText = [SCNText textWithString:@"自构3D模型" extrusionDepth:0.5];scnText.font = [UIFont systemFontOfSize:2];SCNNode *textNode = [SCNNode nodeWithGeometry:scnText];textNode.geometry.firstMaterial.diffuse.contents = QFOrangeColor;textNode.position = SCNVector3Make(-5, 8, -5);textNode.name = @"3D文字";[_model addChildNode:textNode];
系统自带的3D模型控件相关推荐
- android 下拉刷新 组件,android系统自带下拉刷新控件的实现
android系统自带的下拉刷新控件SwipeRefreshLayout位于android.support.v4.widget包下,实现步骤如下: 1.在布局文件中添加该控件,该控件一般作为父控件,而 ...
- 一款增强的3D carousel控件
3D carousel控件一览 3d carousel是常用于slide图文展示的效果,通过css transform修饰相邻的几张图文,用简单的代价呈现3d场景效果. 经过比较,收费控件中我比较欣赏 ...
- Open3d图形界面之3D显示控件
文章目录 SceneWidget 3D Label 相机与视角 SceneWidget SceneWidget是open3d用以展示三维内容的控件,功能极其强大.考虑到大家都已经受够了斯坦福兔子,今天 ...
- 学习IOS开问题篇--视图的模型控件属性写在私有分类中的原因
写在私有分类中就是私有的 ,只能当前类访问. 写在interface中也就是头文件中是公开的,别人只要导入头文件就可以访问. xcode5之后苹果推荐我们将控件的属性写在私有分类中封装起来.避免外界直 ...
- 机房系统(八)——【日期控件DTPicker、比较日期大小】
"宁可让程序(员)多干活,也不能让用户多做".本着为用户着想.给用户以方便的原则,系统中用选代替填,给用户减少很多不必要的麻烦. 在机房系统里遇到了填写日期的问题.VB中已 ...
- UE4之VR手柄和3D UI控件如何交互
1. https://blog.csdn.net/Clarence0v0/article/details/79204223 (在三维世界中和UI交互) 2. https://docs.unrea ...
- 机房系统(四)——【分页控件SSTab】
在机房结账窗体中,有一个带有选项卡的控件--SSTab.下面介绍一下它的用法. 1.作用: 采用分页形式查询或编辑数据表中的数据 2.添加到控件箱: 菜单命令:工程 | 部件,选择:Microsoft ...
- 【转】Win32 SDK 实现带图片的 Button 控件BM_SETIMAGE(Disable时图片不显示)
在编写对话框程序时,希望能在按钮控件里显示一个小插图,如图所示 最初使用的方法是使用 BM_SETIMAGE 消息,但却不能达到满意的效果,在网上查了一通资料,最后终于实现了,现在把实现的方法记下来. ...
- javascript如何获取html中带runat=server的控件的值
用页面中有一个隐藏域 <input id="hdQuarterDocId" type="hidden" runat="server" ...
- 农信银新版系统使用手册-个人网银-配置项(控件类)IE浏览器
打开浏览器internet选项==>进入安全项==>点击自定义级别 对ActiveX进行以上配置,即可完成基础配置,可保证大部分控件处于可用状态 --------------------- ...
最新文章
- kml 解析 java_KML文件解析显示在地图
- long 雪花算法_雪花算法
- junit 测试遇上java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 错误
- 龙芯linux内核,龙芯的linux kernel,内核开发与编译
- 商务宽屏视频剪辑企业网站模板
- arm-linux-gcc 没有那个文件或目录
- 关于创建 LINQ to SQL 类时无法转换复数的问题(zhuan)
- 微型计算机系统中 麦克风属于,模块1-2 计算机基础知识测验题目(50小题)
- Ruby on Rails -跑起来吧hello World!
- python在直方图上画折线图_Python 中 plt 画柱状图和折线图
- cogs908. 校园网
- android模拟qq进场动画,Android用ViewPager仿QQ实现多页面滑动及动画效果
- 史上最全推广小程序实操方法
- 三星同时发展两种电视面板技术,围追堵截LG
- 2022低压电工考题及答案
- C++11 右值引用和移动语义
- 多媒体计算机的图像包括,多媒体计算机常用的图像包括什么
- 安全加解密引擎基础(ECC、ECDH)
- 恒定源扩散matlab,matlab限定源扩散问题
- attach()与detach()的使用
热门文章
- vue3安装WangEditor富文本编辑器v5版本
- win10无法装载iso文件_教你用win10自带虚拟光驱打开iso镜像文件的方法
- 数据分析师人才需求的分析报告
- 工程制图与计算机绘图实训任务书及参考资料,水利工程制图与计算机绘图实训探讨...
- miracast和乐播投屏_【当贝市场】Windows 10 Mircast投屏到电视教程
- 电话机器人源码可以低成本高效率为OEM代理前景保驾护航
- Ubuntu Linux镜像下载
- python的浮点数占几个字节_float占几个字节
- PostgreSQL内核扩展之 - ElasticSearch同步插件
- 一键安装WinRAR主题界面美化