先自定义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模型控件相关推荐

  1. android 下拉刷新 组件,android系统自带下拉刷新控件的实现

    android系统自带的下拉刷新控件SwipeRefreshLayout位于android.support.v4.widget包下,实现步骤如下: 1.在布局文件中添加该控件,该控件一般作为父控件,而 ...

  2. 一款增强的3D carousel控件

    3D carousel控件一览 3d carousel是常用于slide图文展示的效果,通过css transform修饰相邻的几张图文,用简单的代价呈现3d场景效果. 经过比较,收费控件中我比较欣赏 ...

  3. Open3d图形界面之3D显示控件

    文章目录 SceneWidget 3D Label 相机与视角 SceneWidget SceneWidget是open3d用以展示三维内容的控件,功能极其强大.考虑到大家都已经受够了斯坦福兔子,今天 ...

  4. 学习IOS开问题篇--视图的模型控件属性写在私有分类中的原因

    写在私有分类中就是私有的 ,只能当前类访问. 写在interface中也就是头文件中是公开的,别人只要导入头文件就可以访问. xcode5之后苹果推荐我们将控件的属性写在私有分类中封装起来.避免外界直 ...

  5. 机房系统(八)——【日期控件DTPicker、比较日期大小】

    "宁可让程序(员)多干活,也不能让用户多做".本着为用户着想.给用户以方便的原则,系统中用选代替填,给用户减少很多不必要的麻烦.     在机房系统里遇到了填写日期的问题.VB中已 ...

  6. UE4之VR手柄和3D UI控件如何交互

    1. https://blog.csdn.net/Clarence0v0/article/details/79204223    (在三维世界中和UI交互) 2. https://docs.unrea ...

  7. 机房系统(四)——【分页控件SSTab】

    在机房结账窗体中,有一个带有选项卡的控件--SSTab.下面介绍一下它的用法. 1.作用: 采用分页形式查询或编辑数据表中的数据 2.添加到控件箱: 菜单命令:工程 | 部件,选择:Microsoft ...

  8. 【转】Win32 SDK 实现带图片的 Button 控件BM_SETIMAGE(Disable时图片不显示)

    在编写对话框程序时,希望能在按钮控件里显示一个小插图,如图所示 最初使用的方法是使用 BM_SETIMAGE 消息,但却不能达到满意的效果,在网上查了一通资料,最后终于实现了,现在把实现的方法记下来. ...

  9. javascript如何获取html中带runat=server的控件的值

    用页面中有一个隐藏域 <input id="hdQuarterDocId" type="hidden" runat="server" ...

  10. 农信银新版系统使用手册-个人网银-配置项(控件类)IE浏览器

    打开浏览器internet选项==>进入安全项==>点击自定义级别 对ActiveX进行以上配置,即可完成基础配置,可保证大部分控件处于可用状态 --------------------- ...

最新文章

  1. kml 解析 java_KML文件解析显示在地图
  2. long 雪花算法_雪花算法
  3. junit 测试遇上java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing 错误
  4. 龙芯linux内核,龙芯的linux kernel,内核开发与编译
  5. 商务宽屏视频剪辑企业网站模板
  6. arm-linux-gcc 没有那个文件或目录
  7. 关于创建 LINQ to SQL 类时无法转换复数的问题(zhuan)
  8. 微型计算机系统中 麦克风属于,模块1-2 计算机基础知识测验题目(50小题)
  9. Ruby on Rails -跑起来吧hello World!
  10. python在直方图上画折线图_Python 中 plt 画柱状图和折线图
  11. cogs908. 校园网
  12. android模拟qq进场动画,Android用ViewPager仿QQ实现多页面滑动及动画效果
  13. 史上最全推广小程序实操方法
  14. 三星同时发展两种电视面板技术,围追堵截LG
  15. 2022低压电工考题及答案
  16. C++11 右值引用和移动语义
  17. 多媒体计算机的图像包括,多媒体计算机常用的图像包括什么
  18. 安全加解密引擎基础(ECC、ECDH)
  19. 恒定源扩散matlab,matlab限定源扩散问题
  20. attach()与detach()的使用

热门文章

  1. vue3安装WangEditor富文本编辑器v5版本
  2. win10无法装载iso文件_教你用win10自带虚拟光驱打开iso镜像文件的方法
  3. 数据分析师人才需求的分析报告
  4. 工程制图与计算机绘图实训任务书及参考资料,水利工程制图与计算机绘图实训探讨...
  5. miracast和乐播投屏_【当贝市场】Windows 10 Mircast投屏到电视教程
  6. 电话机器人源码可以低成本高效率为OEM代理前景保驾护航
  7. Ubuntu Linux镜像下载
  8. python的浮点数占几个字节_float占几个字节
  9. PostgreSQL内核扩展之 - ElasticSearch同步插件
  10. 一键安装WinRAR主题界面美化