Maya2022 USD 만져보세요. - 다양한 Export.

11098 단어 Pythonmayausd3DCGtech
만약 일반적인 Export Selection 등에서 Export만 진행하는 경우
AddAttribute의 특수 세트가 없으며 USD와 관련된 다양한 설정을 출력할 수 없습니다.
상당히 불만족스러웠다.
할 수 있겠지...그럴 것 같아서 자세히 조사해 봤는데 완성이 됐어요.
나는 방법을 총결하고 싶다.

Python Export 사용


GUI 설정에서 할 수 있는 일은 한계가 있어요.
자세히 조정하려면 스크립트에서 실행해야 합니다.
Help 참조여기 헬프..
mayaUSDexport를 사용하여 Export를 실행합니다.
import maya.cmds as cmds

exportPath = "D:/test.usda"
cmds.mayaUSDExport(file=exportPath, selection=True)
먼저 Export를 실행하려는 경우
selection 없이 ExportAll, selection이 있다면
현재 선택한 노드만 출력합니다.

Skel 내보내기


기본적으로 Skel은 내보내지지 않으며 Skel이 포함된 경우 옵션을 지정합니다.
cmds.mayaUSDExport(file=exportPath,
                   selection=True,
                   exportSkels="auto",
                   exportSkin="auto")
매개변수는 Bool이 아닌 String이며 Export 방법에 따라 플래그를 지정합니다.
자동화된 경우 Skel 아래에 필요한 Joint가 자동으로 생성되어 출력됨
explicit 에서는 지정된 Skel만 출력합니다.

이 근처의 플래그는 GUI 와 동일합니다.
이외의 ColorSets 및 UVSets는 exportUVs = True exportColorSets = True를 통해 ON/OFF를 수행할 수 있습니다.

내보내기 Animation


Animation을 내보낼 때 frame Range를 지정합니다.
cmds.mayaUSDExport(file=exportPath,
                   selection=True,
                   exportSkels="auto",
                   exportSkin="auto",
                   frameRange=[1,30],
                   frameStride=0.5
                   )
Animation은 기본적으로 프레임 레인지가 지정한 StartFrame과 EndFrame 사이에 전체 프레임을 바꿉니다.
프레임 스트레이트로 지정할 수 있는 샘플링 수
위의 예는 0.5 프레임마다 한 번씩 샘플링을 한다.

인스턴스 출력


다음은 마야의 인스타그램이 어떻게 변할지 테스트해 보자.
cmds.mayaUSDExport(file=exportPath,
                   selection=True,
                   exportInstances=True
                   )
기본값은 ON이지만 선택 부품에 Instance가 활성화되어 있는지 여부를 지정할 수 있습니다.

마야 쪽에서는 이런 느낌으로 인스턴트 듀플리케이트가 쉐이프를 만들었다.

결과 1

실례라면 어떨까.
실제 Mesh는 Export
측면 참조를 구성합니다.
    def Xform "pCube4" (
        instanceable = true
        prepend references = </MayaExportedInstanceSources/instance_pCube1_pCubeShape1>
    )
    {
        double3 xformOp:translate = (5.87835563344876, 0, 0)
        uniform token[] xformOpOrder = ["xformOp:translate"]
    }
참조된 Prim은 instanceable = 참으로 참조됩니다.

노드별 지정


여기서 Export 로고와 그 행동을 봤습니다.
다음은 Export의 각 Maya 노드에 대해 USD용 특집을 지정합니다
내가 어떻게 해야 좋을지 총결산해 보겠다.
각 노드에 대한 지정은 AddAttr에서 USD###입니다.이렇게 정해진 이름으로.
특집을 추가해서 지정할 수 있습니다.

트랙 지정


먼저 Prim에 지정된 Kind입니다.
도대체 Kind가 뭐예요?이런 사람
https://fereria.github.io/reincarnation_tech/11_Pipeline/01_USD/11_kind_modelhierarchy/
여기를 참조하세요.

kind를 추가하려는 경우 노드에 USDkind 특집 (string) 을 추가합니다.

추가로 Export의 Prim에 Kind를 지정할 수 있습니다.

Custom Attribute 지정


Maya의 노드에 추가된 Attribute도 USD로 출력하고 싶은 경우는...
상당히 많습니다.
어제 조사한 단계는 그냥 AddAttr였다면 출력하지 않았을 겁니다
전혀 대응이 없나요?그렇게 생각하지만.
잘 처리했어.
먼저, 노드 USDUser Exported Attributes Json 이 앨범 (string)
추가합니다.
그리고 Json으로 Export 설정을 그 특집에 쓰세요.
쓰다
{"<AttrName>": {<option>}}
.
옵션은 지금 발견한 거예요.
"translateMayaDoubleToUsdSinglePrecision": true,
"usdAttrName": "<Name>"
이 두 개.
이 옵션이 없는 경우 내보내기

### 형식으로 내보냅니다.
그렇지 않습니다. 자신이 지정한 이름 공간이나 이름으로 출력하고 싶을 때
usdAttrName에 이름을 지정하여 USD가 담당할 때의 클로즈업 디렉토리 이름을 지정합니다.
지정할 수 있습니다.

이런 한자로 usdAttrName을 foo로 만들면

이렇게

ModelHierrarchy 검사


마지막으로kind주위의 행동이다.
cmds.mayaUSDExport(file=exportPath,
                   selection=True,
                   exportInstances=True,
                   kind="component"
                   )
Export 명령에서 kind 지정 가능
이kind의 지정에 따라 Export에서 오류가 발생할 수 있습니다.
Kind의 규칙은 assembly > group > component 입니다.
component 이하에는 모델이 포함되지 않는다고 합니다 (모델은 상기 3개를 포함합니다)
규칙이 있다.
이 규칙을 지키지 않으면 Export에서 오류가 발생합니다...비록 이와 같지만
이kind를 지정합니다.
따라서 우선 테스트에서kind에component를 지정합니다.

이런 느낌의 노드를 만들어서null 1리(상)assembly pSphere1리(상)component
지정해 두다.
하면, 만약, 만약...
# Error: RuntimeError: </null1> has kind 'assembly' but the export root kind option is set to 'component'; expected that or a derived kind -- Runtime Error in _AuthorRootPrimKinds at line 152 of S:\jenkins\workspace\ecg-mayausd-full-2022-python3-windows\ecg-maya-usd\maya-usd\lib\mayaUsd\fileio\jobs\modelKindProcessor.cpp # 
런타임 오류입니다.
뭐랄까, 분명히 component의 Export였는데, null 1은 assembly가 됐어요.
ModelHierrarchy의 규칙에 따라 고려하면 잘못된 것입니다.
이 경우 kind는 kind="assemby"또는 USD키드의 의도가 지정되지 않아 발생한 오류
USD_수정kind 방면.
어떤 걸 고르느냐는 정해진 규칙에 따라 달라요.
Export에서 kind를 확인할 수 있고 오류를 만들 수 있다는 게 장점입니다.

기타 검증 사항


할 수 있는 일이 많아졌으니 그 외에 더 많은 준비를 하고 싶다!!이런 자리
chaser를 이용해서 어제 더 많은 일을 할 수 있었어요.
https://github.com/Autodesk/maya-usd/blob/dev/test/lib/usd/plugin/infoImportChaser.cpp
maya-usd의Giithub 샘플에서 (상) infoImport Caser.cpp라는 게 있어요.
이걸 보면 뭘 할 수 있는지 알 수 있어요.
이것은
cmds.mayaUSDImport(
    file='/tmp/test.usda',
    chaser=['info'])
Import 또는 Export의 매개변수를 통해 특정 프로세스의 확장을 호출할 수 있습니다.
자기가 만든 거야.
위의 예에서 info를 지정하면 USD의 Custom LayerData 값을 지정합니다.
마야의 노드로 마운트할 때 펼치기...이렇게
샘플은 import이지만 Export 때도 불러낼 수 있어요
예를 들어 특정 흡입관 이름의 경우 Json을 통해 지정하지 않아도 출력할 수 있다
할 수 있도록.
AsseetInfo와 Metadata 출력 같은 임의 처리도 추가할 수 있잖아요.
어떻게 사용하는지 검증이 필요하다.
plugInfo로도 지정할 수 있기 때문에 이 근처를 만들었다면
나는 Exporter를 자신의 용도로 확장할 수 있다고 생각한다.

좋은 웹페이지 즐겨찾기