【Delphi】FireMonkey 군의 3D 모델 데이터를 보통으로 읽는다

소개



FireMonkey는 Delphi/C++Builder의 GUI 애플리케이션 프레임워크입니다. 그 FireMonkey의 마스코트 (?)는 FireMonkey입니다 ... 정식 이름을 모릅니다 (w

FireMonkey 군의 3D 모델 데이터는

C:\Users\Public\Documents\Embarcadero\Studio\19.0\Samples\Object Pascal\Multi-Device Samples\User Interface\ModelViewer\FireMonkey

에 저장됩니다 (10.2.x Tokyo의 경우). 데이터 형식은 COLLADA(*.dae)입니다.

FireMonkey로 3D 모델 데이터 처리



TModel3D에서 모델 데이터를 읽는 방법은 다음과 같습니다.
  • FireMonkey 애플리케이션으로 3D 모델 가져오기(DocWiki)

  • ...하지만 현재 버전에서 이렇게하면 오류가 발생합니다.



    실제로 읽을 때 ...



    뭐, 뭐든지 말하면 이 FireMonkey.DAE 의 텍스처가 TGA 형식인데, Delphi/C++Builder 가 TGA 에 대응하고 있지 않기 때문입니다.

    이전 버전에서는 지원되지 않는 텍스처를 로드하지 않았으므로 오류가 발생하지 않았지만 텍스처가 없는 FireMonkey 군이 로드되었습니다.

    대책



    결론에서 말하면 텍스처를 TGA에서 PNG로 변환하면 됩니다. 소나무 t. 뿌리 T 등으로 변환할 수 있습니다.


  • Monkey_ambient.tga
  • Monkey_diff.tga
  • Monkey_nml.tga
  • Monkey_eye.tga

  • 네 개의 TGA 파일을 PNG 형식으로 변환한 후 FireMonkey.DAE를 텍스트 편집기에서 엽니다.

    FireMonkey.DAE
    <?xml version="1.0" encoding="utf-8"?>
    <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.0">
      <asset>
        <contributor>
          <author></author>
          <authoring_tool>FBX COLLADA exporter</authoring_tool>
          <comments></comments>
        </contributor>
        <created>2011-06-15T11:43:03Z</created>
        <modified>2011-06-15T11:43:03Z</modified>
        <revision></revision>
        <title></title>
        <subject></subject>
        <keywords></keywords>
        <unit meter="0.010000"/>
        <up_axis>Z_UP</up_axis>
      </asset>
      <library_images>
        <image id="Map__14_image-image" name="Map__14_image">
          <init_from>file://M:\MORT\FireMonkey\Monkey\FinalTexture\Monkey_ambient.tga</init_from>
        </image>
        <image id="Map__13_image-image" name="Map__13_image">
          <init_from>file://M:\MORT\FireMonkey\Monkey\FinalTexture\Monkey_diff.tga</init_from>
        </image>
        <image id="Map__12_image-image" name="Map__12_image">
          <init_from>file://M:\MORT\FireMonkey\Monkey\FinalTexture\Monkey_nml.tga</init_from>
        </image>
        <image id="Map__15_image-image" name="Map__15_image">
          <init_from>file://M:\MORT\FireMonkey\Monkey\FinalTexture\Monkey_eye.tga</init_from>
        </image>
    
        ...
    

    어쩌면 전체 경로로 작성된 파일 설명을 PNG로 다시 씁니다.

    FireMonkey.DAE
    <?xml version="1.0" encoding="utf-8"?>
    <COLLADA xmlns="http://www.collada.org/2005/11/COLLADASchema" version="1.4.0">
      <asset>
        <contributor>
          <author></author>
          <authoring_tool>FBX COLLADA exporter</authoring_tool>
          <comments></comments>
        </contributor>
        <created>2011-06-15T11:43:03Z</created>
        <modified>2011-06-15T11:43:03Z</modified>
        <revision></revision>
        <title></title>
        <subject></subject>
        <keywords></keywords>
        <unit meter="0.010000"/>
        <up_axis>Z_UP</up_axis>
      </asset>
      <library_images>
        <image id="Map__14_image-image" name="Map__14_image">
          <init_from>Monkey_ambient.png</init_from>
        </image>
        <image id="Map__13_image-image" name="Map__13_image">
          <init_from>Monkey_diff.png</init_from>
        </image>
        <image id="Map__12_image-image" name="Map__12_image">
          <init_from>Monkey_nml.png</init_from>
        </image>
        <image id="Map__15_image-image" name="Map__15_image">
          <init_from>Monkey_eye.png</init_from>
        </image>
    
        ...
    

    위의 수정을 수행하면 오류없이 텍스처로 읽을 수 있습니다.



    결론



    Delphi/C++ Builder 라이브러리에서 TGA 형식을 지원하면 좋겠다고 생각했습니다.

    macOS라면 ​​FireMonkey에서 TGA를 읽을 수 있으므로 동적으로 3D 모델을 읽어야 할지도 모릅니다.
  • FMX 지원되는 이미지 형식(Embarcadero)

  • 카미노 감음의 애완 동물도 FireMonkey 군입니다만, 개인적으로는 이쪽의 3D 모델을 갖고 싶네요- (w


  • 카미노 감음 (Embarcadero)
  • 좋은 웹페이지 즐겨찾기