lgvv98

[SceneKit] #5 SCNSceneRendererDelegate 본문

apple/VisionOS

[SceneKit] #5 SCNSceneRendererDelegate

lgvv 2023. 8. 15. 00:26

SCNSceneRendererDelegate

 

SceneKit의 애니메이션 루프에 들어가거나 추가적인 렌더링을 수행하기 위해 앱에서 구현할 수 있는 메서드.
protocol SCNSceneRendererDelegate

 

SceneKit으로 게임 또는 앱을 빌드하려면 SCNView 객체 또는 SCNSceneRender 프로토콜을 사용하여 scene에 보여줄 수 있다. 그런 다음 프레임당 게임 로직을 추가하거나 SceneKit이 scene을 렌더링하기 전이나 후에 사용자가 지정한 Metal 또는 OpenGL 렌더링을 수행하려면 SCNSceneRendererDelegate 프로토콜을 구현한다.

 

SCNView 객체 혹은 SceneKit 렌더러에서 scene이 렌더링될때 렌더링 루프는 scene을 아래의 과정을 통해 그린다.

렌더링 순서로 실행

 

1. renderer(_:updateAtTime:)을 호출한다.

2. SceneKit은 해당 작업을 실행하고, Scene 그래프에 연결된 애니메이션 수행

   - SCNAction 클래스 및 SCNAnimatbale 프로토콜을 참조하여 수행

3. 해당 뷰는 renderer(_:didApplyAnimationsAtTime:)를 딜리게이트를 통해 호출

4. SceneKit은 scene의 모든 physcis body에 시뮬레이션을 적용

   - SCNPhysicsWorldSCNPhysicsBody 클래스 참조

5. renderer(_:didSimulatePhysicsAtTime:) 호출

6. SceneKit은 뷰에서 scene 그래프 렌더링합니다.

7. renderer(_:didRenderScene:atTime:) 호출

 

 

# Working With the Rendering Loop

게임을 빌드할 때 일반적으로 애니메이션의 각 프레임 전에 게임 플레이와 관련된 로직을 실행해야 합니다. 게임 로직에는 인풋을 처리하고 인공 지능, 게임 스크립팅 또는 기타 여러 작업이 작업이 포함될 수 있음. 종종 이 로직의 결과에 노드를 변경하거나 노드에서 작업을 실행하는 작업이 포함되기도 함.

 

SCNSceneRendererDelegate는 게임 로직을 구현하기 위한 장소를 제공함. 작업에 대해 구현하는 방법은 게임의 디자인에 따른다. 예를들어 만약 게임이 physics를 사용한다면, 상태를 기반으로 플레이어가 게임에서 이겼는지 여부를 결정하는 것을 renderer(_:didSimulatePhysicsAtTime:) 해당 메소드를 통해 구현할 수 있음.

만약에 physics를 사용하지 않는다면 renderer(_:updateAtTime:) 메소드를 대신 사용할 수 있음.

 

# Custom Rendering

SceneKit이 콘텐츠를 렌더링하기 전 후 커스텀 렌더링을 사용하려면 SCNSceneRenderDelegate 안에 정의된 것들을 사용하면 된다. 이러한 메소드는 scene 그래프의 구조나 콘텐츠에 의존하지 않고 커스텀 Metal 또는 OpenGL을 그리는 것에 적절함.

 

scene의 특정 위치에 적용된 특수 효과를 대신 렌더링하려면 SCNodeRendererDelegate를 참조하면 된다. 또는 GPU 쉐이더 프로그램을 사용하여 SceneKit의 장면 콘텐츠 렌더링을 사용자 정의하려면 SCNShadable 참조하자.

 

 

 

 

(참조)

https://developer.apple.com/documentation/scenekit/scnnoderendererdelegate

 

SCNNodeRendererDelegate | Apple Developer Documentation

Methods you can implement to use your own custom Metal or OpenGL drawing code to render content for a node.

developer.apple.com

 

https://developer.apple.com/documentation/scenekit/scnshadable

 

SCNShadable | Apple Developer Documentation

Methods for customizing SceneKit's rendering of geometry and materials using Metal or OpenGL shader programs.

developer.apple.com

 

'apple > VisionOS' 카테고리의 다른 글

[ARKit] #7 frameSemantics  (0) 2023.08.15
[ARKit] #6 ARKit in iOS  (1) 2023.08.15
[SceneKit] #4 SCNAction  (1) 2023.08.13
[SceneKit] #3 Animating SceneKit Content  (0) 2023.08.13
[SceneKit] #2 Geometry 다뤄보기  (0) 2023.08.13
Comments