Animate에 VR 360 및 VR 파노라마 문서 유형이 도입되어 시선을 사로잡는 컨텐츠를 손쉽게 만들 수 있습니다. 또한 새로운 가상 현실 문서 유형을 사용하여 3D 모델(.glb 파일)을 Animate 프로젝트로 가져오고 3D 컨텐츠에서 애니메이션을 만들 수 있습니다. 

VR 문서 유형에서 만든 컨텐츠를 미리 보려면 새로 도입된 [VR 보기] 패널을 사용하면 됩니다. [VR 보기] 패널에서 동영상 클립 인스턴스를 클릭하여 이동할 수 있습니다. 클릭하여 이동하는 객체는 자동으로 감지됩니다. [VR 보기]에서는 객체를 3D 공간에 배치할 수 있습니다. [VR 보기]에서 객체(동영상 클립) 배치를 변경할 경우 2D 스테이지에 자동으로 반영됩니다. [타임라인] 패널에서 레이어를 텍스처 레이어로 표시하여 두 문서 유형에 대해 원통이나 구에 래핑되도록 할 수 있습니다.

또한 Animate에서는 다양한 API를 사용하여 런타임에 가상 현실 애니메이션을 관리할 수 있습니다. 예를 들어 사용자가 버튼을 클릭할 때 가상 현실 환경으로 객체 몇 개를 가져올 수 있습니다. 

참고:

Animate의 가상 현실(360) 및 가상 현실(파노라마)은 2018년 10월 릴리스의 베타 버전입니다. 

가상 현실 문서 유형

가상 현실(VR)의 문서 유형은 다음 두 가지입니다. 

VR 파노라마

panorama outside vacation wooden village home in sunny evening day . Full 360 degree seamless panorama in equirectangular spherical projection
  • 이 문서 유형을 사용하면 가상 현실 애플리케이션용 파노라마 컨텐츠를 만들 수 있습니다. 
  • 이 문서 유형에서는 텍스처 레이어에 직접 컨텐츠를 그리면 컨텐츠가 원통에 래핑됩니다.
  • 파노라마 이미지를 텍스처 레이어에 표시하거나 배경을 그릴 수 있습니다. 
  • Animate에서는 사용자가 만든 2D 애니메이션을 인터랙티브한 요소와 함께 파노라마 컨텐츠로 변환합니다. 

VR 360

panorama outside vacation wooden village home in sunny evening day . Full 360 degree seamless panorama in equirectangular spherical projection
  • 이 문서 유형을 사용하면 가상 현실 애플리케이션용 360도 컨텐츠를 만들 수 있습니다.  
  • 이 문서 유형에서는 텍스처 레이어에 직접 컨텐츠를 그리면 컨텐츠가 구에 래핑됩니다.
  • 정방형 이미지를 유지하거나 컨텐츠를 그릴 수 있습니다. 
  • Animate는 사용자가 만든 2D 애니메이션을 인터랙티브한 요소와 함께 360도 컨텐츠로 변환합니다.

시작 화면의 가상 현실 360 및 파노라마
시작 화면의 가상 현실 360 및 파노라마

가상 현실 컨텐츠 제작 및 게시

다음 단계에 따라 Animate에서 가상 현실 컨텐츠를 만듭니다.

  1. 배경의 스테이지에 360 또는 파노라마 이미지를 가져옵니다.

    이미지 크기가 크면 스테이지 보기의 크기를 조정할 수 있습니다.

    • 크기를 설정하려면 수정 > 문서를 선택합니다.
    •  내용에 일치를 클릭합니다.

    이미지를 화면 가운데로 설정하려면 창 오른쪽 위의 스테이지 가운데 아이콘을 클릭합니다. 

  2. 레이어를 텍스처 레이어로 만들려면 아래 스크린샷에서처럼 [타임라인] 패널에서 모든 레이어에 대해 텍스처 래핑 만들기 아이콘을 클릭합니다.

    레이어에 대해 텍스처 래퍼 만들기
    레이어에 대해 텍스처 래퍼 만들기

    선택한 문서 유형에 따라 텍스처 레이어가 원통 또는 구 주위로 래핑됩니다.

  3. 객체를 스테이지에 추가하고, 에셋에 따라 클래식 또는 모션 트위닝을 객체에 추가하고, 애니메이션을 만듭니다. 

    VR 360 스테이지
    VR 360 스테이지

    위에 나온 스크린샷은 VR 360 문서 유형의 정방형 이미지, 모션 경로가 표시된 새, 타임라인에 클래식 트위닝이 있는 Animate의 스테이징 보기를 보여줍니다. 

  4. 창 > VR 보기를 사용하여 컨텐츠 미리 보기.

    VR 보기를 사용하여 VR 컨텐츠 미리 보기
    VR 보기를 사용하여 VR 컨텐츠 미리 보기

    [VR 보기] 패널에서 VR 보기를 클릭하여 시작합니다.

    VR 보기 패널
    VR 보기 패널

    VR 보기 미리 보기 모드에서 컨텐츠를 초기 상태로 재설정하려면 재설정 버튼을 사용합니다. VR 보기에는 제작 스테이지의 변경 내용이 자동으로 반영되지 않습니다. 스테이징 환경에서 에셋에 적용된 변경 내용을 보려면 새로 고침을 클릭합니다. 

    VR 보기 새로 고침 및 재설정 옵션
    VR 보기 새로 고침 및 재설정 옵션

    미리 보기 모드에서 동영상 클립 인스턴스를 이동할 수 있습니다. 인스턴스 위로 마우스를 이동하면 Animate에서 객체를 자동으로 감지합니다. 아래 스크린샷에서처럼 객체 위로 마우스를 이동하면 커서 모양이 십자 모양 막대 아이콘으로 바뀝니다. 선택한 문서 유형에 따라 원통 또는 구 경로를 따라 객체를 이동할 수 있습니다.

    VR 보기 창 주위로 팬(이동)하려면 미리 보기 화면을 클릭하고 주위로 드래그합니다. 

    객체를 이동하는 데 사용되는 십자 모양 막대 아이콘
    객체를 이동하는 데 사용되는 십자 모양 막대 아이콘
  5. 파일 > 제작 또는 Ctrl + Enter를 사용하여 컨텐츠를 제작합니다. 제작할 때 Animate에서 이미지가 원통 또는 구 메쉬에 래핑됩니다. 레이어를 추가하고 해당 레이어에 애니메이션 컨텐츠를 추가할 수 있습니다.

    샘플 가상 현실 360을 통해 제작된 출력은 아래 애니메이션 GIF에서처럼 나타납니다. 

    VR 360 출력 샘플
    VR 360 출력 샘플
    VR 파노라마 출력 샘플
    VR 파노라마 출력 샘플

    가상 현실 컨텐츠를 제작하는 경우 호스트되는 JavaScript 라이브러리를 런타임으로 사용하도록 선택할 수 있습니다. Animate에서는 기본적으로 호스트되는 라이브러리의 제작된 컨텐츠에 대해 런타임을 사용합니다. 런타임을 제작된 출력과 함께 패키지화하려면 [제작 설정]에서 옵션의 선택을 취소하면 됩니다. 

    제작 설정
    라이브러리용 제작 설정

3D 컨텐츠 사용

가상 현실 문서 유형을 사용하면 Animate 프로젝트로 3D 모델(.glb 파일)을 가져와 3D 컨텐츠를 만들 수 있습니다.

  1. VR(360) 미리 보기 또는 VR(파노라마) 유형의 문서를 만듭니다.

  2. 파일 > 가져오기를 선택하고, 스테이지나 라이브러리로 가져올 .glb 파일로 이동합니다.

    스테이지로 3D 컨텐츠 가져오기
    스테이지로 3D 컨텐츠 가져오기
  3. 동영상 클립 객체와 유사한 인터랙티브한 요소 및 애니메이션을 추가하고 제작합니다.

    VR 보기에서 3D 모델을 미리 볼 수도 있습니다. 

런타임에 가상 현실 사용

또한 Animate에서는 API를 사용하여 런타임에 가상 현실 애니메이션을 관리할 수 있습니다. 예를 들어 사용자가 버튼을 클릭할 때 360 가상 현실 환경으로 객체 몇 개를 가져올 수 있습니다. 

다음은 가상 현실 런타임 API 목록입니다. 

패키지: anWebgl

속성

이름

유형/클래스

액세스

설명

예제

Stage

Stage

RW

스테이지 속성을 가져옵니다/설정합니다.

anWebgl.stage

virtualCamera

VirtualCamera

RW

기본 카메라에 액세스합니다.

anWebgl.virtualCamera

Root

MovieClip

RO

가장 많이 표시되는 객체(현재 장면 타임라인).

anWebgl.root

메서드

이름

프로토타입

설명

예제

addGLBFile

addGLBFile(filePath: string, successCallback : function, errorCallback : function):void

지정된 GLB 파일에서 3D 모델을 로드합니다.

anWebgl.addGLBFile("model.glb" , successCallbackFunction, errorCallbackFunction).

playAll

playAll() : void

루트를 포함하여 모든 동영상 클립의 애니메이션을 재생합니다.

anWebgl.playAll();

stopAll

stopAll() : void

루트를 포함하여 모든 동영상 클립의 애니메이션을 정지합니다.

anWebgl.stopAll();

클래스: MovieClip

다음을 상속: DisplayObjectContainer

속성

메서드

이름

프로토타입

설명

예제

Play

play(): void

동영상 클립의 애니메이션을 재생합니다.

anWebgl.root.getChildByName("name").play();
(or)

this.play(); 

Stop

stop(): void

동영상 클립의 애니메이션을 정지합니다.

anWebgl.root.getChildByName("name").stop();

 

playAll

playAll() : void

루트를 포함하여 모든 동영상 클립의 애니메이션을 재생합니다.

anWebgl.root.getChildAt(0).playAll();

 

stopAll

stopAll():void

루트를 포함하여 모든 동영상 클립의 애니메이션을 정지합니다.

anWebgl.root.getChildAt(0)).stopAll();

 

클래스: DisplayObject

다음을 상속: IEventDispatcher

이름

프로토타입

설명

예제

hitTestPoint

hitTestPoint(x, y, Boolean).

히트 객체의 유형을 기준으로 displayObject/displayObjectContainer/movieClip을 반환합니다.

x 및 y는 화면의 점 좌표입니다.

anWebgl.root.hitTestPoint(300, 200, true, false);

이름

유형/클래스

액세스

설명

예제

X

숫자

RW

X축에서 평행 이동

var name =anWebgl.root.getChildByName("name");
name.x+=10;

 

Y

숫자

RW

Y축에서 평행 이동

var name = anWebgl.root.getChildByName("name");
name.y+=10;

 

Z

숫자

RW

Z축에서 평행 이동

var name = anWebgl.root.getChildByName("name");
name.z+=10;

 

scaleX

숫자

RW

X축을 따라 크기 조절

var root = anWebgl.root;
var child = root.getChildAt(0);
child.scaleX=2;

 

scaleY

숫자

RW

Y축을 따라 크기 조절

var root = anWebgl.root;
var child = root.getChildAt(0);
child.scaleY=10;

 

scaleZ

숫자

RW

Z축을 따라 크기 조절

var root = anWebgl.root;
var child = root.getChildAt(0);
child.scaleZ=10;

 

rotationX

숫자

RW

X축을 따라 회전

anWebgl.root.getChildByName("name").rotationX+=30;

(또는)

anWebgl.root.movieClip_name.rotationX+=30;

rotationY

숫자

RW

Y축을 따라 회전

anWebgl.root.getChildByName("name").rotationY+=30;

 

rotationZ

숫자

RW

Z축을 따라 회전

anWebgl.root.getChildByName("name").rotationZ+=30;

 

부모

DisplayObjectContainer

RO

부모 컨테이너

var root = anWebgl.root;
var child = root.getChildAt(0);
console.log(child.parent)

 

Visible

부울

RW

객체 가시성

var root = anWebgl.root;
var child = root.getChildAt(0);
console.log(child.visible);

클래스: DisplayObjectContainer

상속: DisplayObject

이름

프로토타입

설명

예제

numChildren

numChildren:num

객체의 자식 수를 반환함

anWebgl.root.movieClipInstanceName.numChildren;

removeChild

removeChild(obj:DisplayObject):void

인수 객체가 존재하는 경우 제거함

anWebgl.root.movieClipInstanceName.removeChild(childObj);

Contains

contains(obj:DisplayObject):boolean

인수 객체가 자식인 경우 true를 반환하고 그 외의 경우 false를 반환함

anWebgl.root.movieClipInstanceName.contains(childObj);

getChildAt

getChildAt(index:Number): DisplayObject

인수 인덱스의 자식을 반환함

anWebgl.root.movieClipInstanceName.getChildAt(2);

getChildByName

getChildByName(name:String):DisplayObject

자식이 존재하는 경우 인수 이름과 함께 반환함

anWebgl.root.movieClipInstanceName.getChildByName(childName);

클래스: Stage

속성

이름

액세스

설명

예제

stageWidth

RO

스테이지의 폭

anWebgl.stage.stageWidth

stageHeight

RO

스테이지의 높이

anWebgl.stage.stageHeight

색상

RW

스테이지 배경색

anWebgl.stage.color

클래스: VirtualCamera

메서드

이름

프로토타입

설명

예제

getCamera

getCamera()

카메라 객체를 가져옵니다. 런타임에 카메라 속성을 가져오거나 설정합니다.

let cam = anWebgl.virtualCamera.getCamera();
let pos = cam.getPosition();
console.log("camera position x: " +pos.x + " y: "+ pos.y+" z: "+pos.z);

 

getPosition

getPosition()

카메라의 현재 위치를 지정하는 x, y, z 속성이 포함된 객체를 반환합니다.

let cam = anWebgl.virtualCamera.getCamera();
let pos = cam.getPosition();
console.log("camera position x: " +pos.x + " y: "+ pos.y+" z: "+pos.z);

 

setPosition

setPosition()

입력 매개 변수를 통해 지정된 절대 위치로 카메라를 이동합니다. 기본값은 0입니다.

let cameraPos = {x: 10, y:10, z:10};
anWebgl.virtualCamera.getCamera().setPosition(cameraPos);

 

moveBy

moveBy()

현재 위치를 기준으로 카메라를 이동합니다.

let moveByPos = {x: 10, y:10, z:10};
anWebgl.virtualCamera.getCamera().moveBy(moveByPos);

 

resetPosition

resetPosition()

카메라 위치를 원래 위치인 (0,0,0)으로 다시 설정합니다.


anWebgl.virtualCamera.getCamera().resetPosition();

 

SetRotation

SetRotation()

입력 매개 변수로 제공된 절대 각도만큼 카메라를 회전합니다.

let __rotation__ = {x: 10, y:10, z:10};
anWebgl.virtualCamera.getCamera().setRotation(__rotation__);

 

resetRotation

resetRotation()

카메라 각도를 0으로 다시 설정합니다.

anWebgl.virtualCamera.getCamera().resetRotation();

 

이 작업에는 Creative Commons Attribution-Noncommercial-Share Alike 3.0 Unported License의 라이센스가 부여되었습니다.  Twitter™ 및 Facebook 게시물은 Creative Commons 약관을 적용받지 않습니다.

법적 고지 사항   |   온라인 개인 정보 보호 정책