[SceneKit专题-OC]1.Hello SceneKit

  • 本系列文章的学习首先要感谢史前图腾的共享精神,在他的系列文章中有详细的解释,但是他的代码都是Swift写的.并且代码的解释比较少,
  • 在这里我提供了demo-OC版供大家参考和学习,
  • demo地址:
    OC-地址
    swif-地址

效果图

知识点解析

Scenes:SCNScene

自带一个定义了坐标系的root node(根节点),使用scene gragh来组织场景,可以向内部增加树状结构的内部节点(node),例如 lights光源, cameras相机, geometry几何体, particle emitters粒子发射源.
需要放到SCNView的实例中呈现,SCNView在OSX(macOS)中是NSView的子类,在iOS中是UIView的子类;

左侧树状结构

image.png

坐标系,屏幕外是+Z方向,坐标使用向量表示,示例SCNVector3(x: 0, y: 5, z: 10)

image.png

Nodes:SCNNode

游戏中的每个元素都被称为node(节点),存放在树状结构scene gragh中,例如 lights光源, cameras相机, geometry几何体, particle emitters粒子发射源.每个scene graph中包含一个特殊的基础节点:root node(根节点),可以把其他节点添加到节点下面,变成它的子节点.

添加到scene中的node,默认在(x:0, y:0, z:0),即相对于父节点的位置.要想调整节点在父节点的位置,应该调整local coordinates(本地坐标系),而不是调整world coordinates(世界坐标系).

注意
默认情况下,如果一个场景中没有任何改变时,Scene Kit会进入"paused"(暂停)状态,为了防止这种情况,需要在创建SCNView实例时设置playing属性为true如

scnView.playing = true
camera

摄像机的显示范围控制,小球zNear不显示,大于zFar不显示.添加到一个空节点的camera属性里

image.png
 // SCNScene - 默认有一个根节点
    SCNScene *scene = [SCNScene new];
    // 将该场景添加到 SCNView 上 否侧该场景无法显示
    scenView.scene = _scene = scene;
    scene.background.contents = [UIImage imageNamed:@"Background_Diffuse"];
    
    // 创建一个相机节点
    SCNNode *node = [SCNNode new];
    node.camera = [SCNCamera new];
    node.position = SCNVector3Make(0, 5, 10);
    // 将其添加到根节点上
    [scene.rootNode addChildNode:node];

primitives geometry(原生几何体)

系统自带了很多基础的几何体,添加到一个空节点的geometry属性里
第一排从左起:cone(圆锥体), torus(圆环体), capsule(胶囊体), tube(管道)
第二排从左起:pyramid(四棱锥), box(长方体), sphere(球体), cylinder(圆柱体)

image.png

SCNView内置属性

// SCNView
    SCNView *scenView = [SCNView new];
    scenView.backgroundColor = [UIColor redColor];
    scenView.frame = self.view.bounds;
    scenView.showsStatistics = true; // 显示统计数据
    scenView.allowsCameraControl = true; // 打开相机控制
    scenView.autoenablesDefaultLighting = true; // 打开默认光源 _  如果该选项不打开 几何体的效果将无法显示
    [self.view addSubview:scenView];

1.showsStatistics在底部显示一个实时的统计条,左侧+号点击可展开;
2.showsStatistics允许使用简单手势控制相机
-单指滑动:旋转相机;
-双指滑动:移动相机;
-双指捏合:缩放;
-双击:如果有两个相机则切换,一个相机则返回原始状态;
3.autoenablesDefaultLighting创建一个通用的全方向光源;

fps:帧率,每秒渲染的画面数
◆:每帧画面渲染的总物体数,多光源照射同一物体时会渲染多次
▲:每帧画面渲染的多边形总数量,
✸:可见的光源总数(影响物体的光源), Scene Kit推荐不要同时使用3个以上光源

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,132评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,802评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,566评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,858评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,867评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,695评论 1 282
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,064评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,705评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,915评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,677评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,796评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,432评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,041评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,992评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,223评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,185评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,535评论 2 343

推荐阅读更多精彩内容