2014-12-18 7 views
0

Cocos3D를 사용하면 3D 모델의 스크린 샷을 사용자가 알지 못하는 채 백그라운드에서 볼 수 있습니까?Cocos3D - 백그라운드에서 다양한 스크린 샷 찍기

전처리 목적 및 기타 용도로 3D 모델의 스크린 샷을 다양한 각도로 찍고 싶습니다. Render-To-Texture 기능을 수행 한 후 장면이 보이지 않을 때 drawSceneContentWithVisitor: 메서드는 모든 렌더링주기가 아닌 한 번만 실행됩니다. 분명한 이유가있어 CC3GLFramebuffer*은 새 데이터로 업데이트되지 않으므로 초기 스크린 샷 만 사용할 수 있습니다.

감사합니다.

답변

0

코코스 3D에서 3D 장면을 표면으로 렌더링 할 수 있습니다. 이렇게하는 방법에 대한 예제는 CC3DemoMashUp addTelevisiondrawSceneContentWithVisitor: 메서드를 참조하십시오.

중요한 점은 드로잉을 수행 할 때 3D 드로잉 환경이 설정되었다는 것입니다. 가장 안전한 장소는 drawSceneContentWithVisitor: 방법입니다. 그러나 다른 곳에서 렌더링하려는 경우 렌더링 전후에 CC3Scene open3DWithVisitor:CC3Scene close3DWithVisitor: 메쏘드를 호출해야합니다. 방법에 대한 예제는 CC3Scene processInitializeSceneopen 메서드 구현을 참조하십시오.

장면을 여러 시점에서 렌더링하려면 장면에 여러 개의 카메라를 추가하고 렌더링하기 전에 카메라를 선택하기 위해 도면 방문자의 camera 속성을 적절하게 설정해야합니다. 이것이 CC3DemoMashUpScene addTelevisiondrawToTVScreen 방법에서 어떻게 수행되는지보십시오. drawToTVScreen 메서드는 표면의 색상 버퍼와 깊이 버퍼를 지우는 방법도 보여줍니다.

+0

죄송합니다. 제 질문에 대해 분명히 밝히지 않았으며 정확합니다. 여러 카메라를 사용하여 여러 시점에서 텍스처를 렌더링 할 수 있습니다. 제가 정말로하려는 것은 정적 3D 모델보다는 델타 시간에 애니메이션 된 3D 모델을 렌더링하는 것입니다. 즉, 5 초 동안 3D 모델이 움직일 수 있고 x 개의 이미지 수가 캡처됩니다. drawSceneContentWithVisitor : 백그라운드에서 실행 중일 경우 한 번만 실행되므로 3D 캐릭터를 애니메이션으로 만들 수 없습니다. –

+0

정확하게 이해했다면 일련의 애니메이션 스냅 샷을 만들려고합니다 ... 플립 애니메이션과 같은 종류입니까? 그리고 이미지를 사전이나 파일에 저장하고 싶습니까? 'CC3DemoMashUpScene saveTVImage' 메소드를보십시오. TV 텍스처의 현재 내용 (렌더링 된 텍스처)에서 CGImageRef를 생성하여 파일에 저장합니다. 이 예제는 터치 이벤트에 의해 트리거되지만, (텍스처 렌더링 직후)'drawSceneContentWithVisitor : '메소드에서이를 수행함으로써, 장면이 애니메이션화 될 때 원하는대로 이들 스냅 샷을 자주 가져갈 수 있습니다. –

+0

실제로, 사전 처리 목적으로 백그라운드에서 애니메이션이 발생하고 있습니다. 배경에 있기 때문에 drawSceneContentWithVisitor : 메서드는 모든 렌더링주기가 아닌 한 번만 실행합니다. –