Q100170: Katana 의 객체에 텍스처 적용 시작하기

팔로우

요약

텍스처는 셰이더 라이브러리와 스튜디오 파이프라인에 의해 다양한 방식으로 처리되며 Katana 몇 가지 일반적인 규칙에 따라 텍스처를 할당하는 유연한 프레임워크를 제공합니다.

다음은 3Delight, RenderMan 및 Arnold 렌더러와 함께 작동하는 일부 옵션에 대한 요약입니다. 여기에 설명된 두 가지 접근 방식을 모두 보여주는 첨부된 예제 장면도 참조하세요.

 

추가 정보

재질 속성을 사용하여 텍스처 선언

각 개체에 고유한 텍스처를 제공하는 가장 간단한 방법은 개체별로 재질을 만들고 셰이더에서 해당 텍스처를 문자열 매개변수로 명시적으로 선언하는 것입니다. 그런 다음 각 개체에 관련 재질이 할당됩니다.

이 접근 방식은 특히 많은 수의 객체가 포함된 장면으로 작업할 때 가장 노동 집약적이며 재질을 변경해야 할 때 유연성이 부족합니다.

많은 객체가 동일한 재질을 공유할 수 있지만 다른 텍스처를 할당해야 하는 경우가 많습니다. 이 경우 각 객체가 자체 텍스처를 선택하도록 장면을 설정할 수 있습니다.

 

객체 속성을 사용하여 텍스처 선언

재료에 텍스처를 설정하는 대신 렌더링할 객체가 임의의 속성을 통해 관련 텍스처 파일을 가리킬 수 있습니다.

Katana 의 사용자 데이터 및 기본 변수

렌더러를 사용하면 셰이더에서 조회할 수 있는 사용자 데이터나 기본 변수를 사용할 수 있습니다. Katana에서는 임의의 기하학 데이터를 기하학.arbitrary.xxx Katana 속성으로 읽은 다음 기본적으로 렌더러에 사용자 또는 primvar 데이터로 기록하는 규칙이 있습니다. 즉, primvars나 사용자 데이터를 사용하여 텍스처를 지정하는 경우 이 작업이 자동으로 수행될 수 있습니다.

Katana 에서 RenderMan을 사용할 때 primvar를 사용하여 텍스처 선언

RenderMan에는 인스턴스 위치에서 셰이더 매개변수 구문을 확인하고 RenderMan <primstr:attributename> 구문을 통해 이를 수행하는 인스턴스 전체의 텍스처를 처리하는 방법이 있습니다. 그러나 이는 RenderMan 24에서만 도입되었습니다.

 

예시 장면 만들기

다음은 객체 속성을 사용하여 텍스처를 선언하는 방법에 대한 지침입니다. 이 예에서는 3Delight 렌더러를 사용하고 있습니다.

  1. 도움말 > 포니를 원합니다 메뉴 에서 CameraCreate, NetworkMaterialCreate 및 두 개의 Pony 노드를 추가합니다 . 각 포니 노드의 이름 매개변수를 고유하게 변경해야 합니다.

  2. 각 포니의 다운스트림에 AttributeSet 노드를 만들고 해당 업스트림 포니의 장면 그래프 위치에 대한 경로를 설정합니다.

    mceclip1.png

  3. 각 AttributeSet 노드를 편집하고 각 attributeName 매개변수를 'geometry.arbitrary.basecolor.value'로 변경하고 매개변수 유형을 'string'으로 변경합니다.

    mceclip4.png

  4. 고유한 텍스처 파일을 가리키도록 각 AttributeSet의 stringValue를 설정합니다. $KATANA_ROOT/demos/tx_files/에서 Katana 에 포함된 예제 파일을 찾을 수 있습니다.

    mceclip5.png

  5. NetworkMaterialCreate 노드(단축키: Ctrl+MMB 또는 선택한 경우 Ctrl+Enter )로 이동하여 dlPrincipled 및 dlTexture 음영 노드를 만듭니다.

  6. dlTexture 노드를 편집하고 Texture File 매개변수를 '{attr:geometry.arbitrary.basecolor.value}'로 설정합니다. 이전에 설정된 속성에서 파일 경로를 읽습니다.

    mceclip6.png

  7. dlTexture의 outputColor 포트를 dlPrincipled 노드의 Base > Color 포트 입력에 연결하고 NetworkMaterialCreate에서 뛰어내립니다(단축키: Ctrl+Backspace ).

    mceclip7.png

  8. 포니 노드를 제외한 모든 노드를 선택하고 'M'을 눌러 병합 노드 다운스트림을 만듭니다.

    mceclip8.png

  9. Merge 아래에 MaterialAssign 노드를 만들고 연결하고 '/root/world/geo//*' 값으로 사용자 정의 CEL 참조를 추가하고 MaterialAssign 매개변수를 '/root/materials/NetworkMaterial'로 설정합니다. 이렇게 하면 장면 그래프에서 '지리적' 위치 아래의 모든 위치에 재질이 적용됩니다.

    mceclip9.png

  10. 마지막으로 MaterialAssign의 다운스트림에 GafferThree 노드를 생성하고 Add 3Delight 메뉴에서 환경 조명을 추가합니다.

렌더링할 때 이제 단일 재질에서 조랑말에 적용된 두 가지 다른 텍스처를 볼 수 있습니다.

mceclip10.png

추가 읽기

인스턴스 간 텍스처 처리 에 대한 자세한 내용은 Q100508: Hierarchical (Instance Source) Instancing을 참조하십시오.

첨부 파일

우리는 문제로 불편을 끼쳐 드려 죄송합니다

이유를 알려주세요