지원 티켓 만들기
팔로우

Q100326 : 사용자 지정 작업 작성 및 테스트

개요

Ops는 Katana에서 3D 장면 데이터를 만들고 조작하는 작업 블록입니다. Ops는 C ++로 작성된 Op Types 라고하는 플러그인의 인스턴스입니다 . Katana의 Op API를 사용하여 다양한 작업을 수행하고 씬 그래프를 조작하고 속성을 수정할 수 있습니다.

이 기사는 $ KATANA_ROOT / plugins / Src / Ops 에있는 HelloWorld 예제 Op를 기반으로 사용자 정의 Op를 작성, 컴파일 및 테스트하는 단계별 예제를 제공합니다 .

추가 정보

커스텀 Op를 만들기 전에, $ KATANA_ROOT / plugins / Src / Ops 에있는 예제 Ops를 살펴 보는 것이 도움이 될 것 입니다. 이 튜토리얼은 특별히 HelloWorld 예제에 기초합니다.

다음 단계에서는이 Op의 소스 코드를 수정하여 장면 그래프의 위치에서 속성을 읽고 설정할 수있는 Op를 만드는 방법을 설명합니다.

  1. $ KATANA_ROOT / plugins / Src / Ops / HelloWorld / src / HelloWorldOp.cpp cook() 함수 를 다음과 같이 수정합니다.

static void cook(Foundry::Katana::GeolibCookInterface& interface)
{
   FnAttribute::StringAttribute typeAttr = interface.getAttr("type");
   interface.setAttr("testType",  typeAttr);

    if (interface.atRoot())
    {
       interface.setAttr("hello", FnAttribute::StringAttribute("world!"));
    }

}

  1. 예제 Op 플러그인을 빌드하려면 $ KATANA_ROOT / plugins / Src / README.md에 있는 지침을 따르십시오 .

    cmake 명령에서 소스 파일 경로가 올바른 Katana 버전을 가리키는 지 확인하십시오. cmake 명령에 -DCMAKE_PREFIX_PATH를 포함 할 필요가 없습니다.이 경우에 우리가 관심이없는 다른 Op 예제에 대한 종속성을 지정하기 때문입니다.

  1. 플러그인이 빌드되고 설치되면 설치 디렉토리가 KATANA _RESOURCES의 일부인지 확인하십시오. README.md에 나와있는대로 명령을 사용하면 MyKatanaResources 디렉토리가 KATANA _RESOURCES에 포함되어야합니다.

  1. Katana를 시작하고 CameraCreate 노드를 만들고 GenericOp 노드에 연결합니다.

  1. GenericOp 노드의 opType 매개 변수를 "HelloWorld"로 설정하십시오. 이 결과는 각 위치에 testType 이라는 속성이 설정되고 속성의 값이 위치의 유형이되어야합니다. 또한 "hello"라는 속성은 / root 에 "world!"값 으로 설정됩니다 .

cook() 함수는 읽거나이 지역에 관심이있는 모든 속성을 설정하거나, 다른 작업들을 수행하기 위해 수정이 될 수 있습니다.

커스텀 작전에서 사용할 수있는 더 많은 함수는 Katana 개발자 가이드 (C ++) 를 참조하십시오 .

참고 : Op는 기본적으로 ( GenericOp 노드 applyWhere 매개 변수에 의해 지정된대로) 모든 위치에서 실행 되므로 자동으로 전체 장면 그래프를 탐색합니다. 위의 예에서 testType 속성은 모든 위치에 설정됩니다.

이것이 항상 바람직한 것은 아니기 때문에 위의 예제는 인터페이스가 atRoot() 인지 여부를 확인하는 if 문도 포함합니다 . Op가 요리 된 최상위 위치에서 실행 중일 때만 if 블록 내부의 명령문이 실행됩니다 at를 사용 하고, if 문 다음에 interface.stopChildTraversal() 사용 하여 Op가 그 최상위 위치 아래의 전체 장면 그래프를 가로 지르는 것을 막을 수 있습니다.

Op를 사용할 사용자 정의 노드 유형 을 작성하려면 $ KATANA_ROOT / plugins / Src / Ops / Messer / RegisterMesserNode.py에 주어진 NodeTypeBuilder 예제를 참조하십시오 .

일부 NodeTypeBuilder API 함수 는 Katana 개발자 가이드에 설명되어 있습니다.

이 단계에 문제가 발생하면 지원 티켓을 열고 발생한 문제 및 지금까지 수행 한 문제 해결 단계를 알려주십시오.

지원 티켓을 여는 방법에 대한 자세한 내용은 ' 지원 포털 사용 '문서를 참조하십시오.



도움이 되었습니까?
/

We're sorry to hear that!

Please tell us why.
2명 중 1명이 도움이 되었다고 했습니다.

댓글