ARKit — 1. 박스 만들기

naljin
5 min readOct 23, 2018

--

본글은 ARKit 동영상 강의를 기반으로 작성한 글입니다. 출처는 아래에서 확인할 수 있습니다.

오역이나 잘못된 정보에 대한 수정은 언제든지 환영합니다 :)

ARKit 을 이용해 직육면체 박스 만들기

이전 ARKit시작하기 에서는 위와 같이 art.scnassets 안의 파일을 바로 scene으로 적용함

본글에서는 코드를 통해 간단한 직육면체 박스를 만들어보도록 함

  1. 우선 이전의 예제와 같이 아래의 세단계를 수행
  • import SceneKit, ARKit
  • ARSCNViewDelegate 상속
  • ARSCNView 를 상속받는 sceneView 추가

2. SCNScene 객체 생성

let scene = SCNScene()

3. SCNBox 객체 생성

let box : SCNGeometry = SCNBox(width: 0.2, height: 0.2, length: 0.2, chamferRadius: 0)

SCNBox 에는 width, height, length, chamferRadius 네가지 속성이 존재. 이때 속성의 단위는 meter

class SCNBox : SCNGeometry - A six-sided polyhedron geometry whose faces are all rectangles, optionally with rounded edges and corners.

4. SCNMaterial 객체 생성후 속성 추가

let material = SCNMaterial()
material.diffuse.contents = UIColor.red

material은 큐브(여기서는 box)에 붙일 수 있는 것으로 색깔이 될 수도, 이미지가 될 수도 있음. 위의 예에서는 빨간색 색상을 적용

var diffuse: SCNMaterialProperty { get } An object that manages the material’s diffuse response to lighting.

var contents: Any? { get set }The visual contents of the material property — a color, image, or source of animated content. Animatable.

5. SCNNode 객체 생성 후 속성 추가

궁극적으로 SceneKit 에서는 다양한 material 과 모양이 적용된 노드들을 가지고 SceneKitView에 적용할 것이기 때문에 가장 중요한 부분이라고 할 수 있음.

let node = SCNNode()node.geometry = boxnode.geometry?.materials = [material]node.position = SCNVector3(0, 0.1, -0.5)

node의 geometry와 적용될 materials 가 앞서 생성한 box와 material 이라고 설정하고 위치를 정해줌.

3D 공간에서 작업할 것이므로 Vector 를 사용하며 x, y, z 좌표를 지정해줌. 이도 meter 법 적용.

x — 좌/우

y — 상/하

z — 앞/뒤

6. scene의 rootNode 에 생성한 node 를 childNode로서 추가

scene.rootNode.addChildNode(node)

전체코드

실제 구동 화면

node.position = SCNVector3(0, 0, 0)
node.position = SCNVector3(0, 0.05, -2.5)
node.position = SCNVector3(0, 0, -2.5)
let box = SCNBox(width: 0.2, height: 0.2, length: 0.2, chamferRadius: 0.5)

이전 글 👈🏻

다음 글 👉🏻

출처

--

--