【Delphi】FireMonkey 군의 3D 모델 데이터를 보통으로 읽는다
                                            
                                                
                                                
                                                
                                                
                                                
                                                 9144 단어  델파이FireMonkeyFMXC++빌더programming
                    
소개
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에서 모델 데이터를 읽는 방법은 다음과 같습니다.
TModel3D에서 모델 데이터를 읽는 방법은 다음과 같습니다.
...하지만 현재 버전에서 이렇게하면 오류가 발생합니다.

실제로 읽을 때 ...

뭐, 뭐든지 말하면 이 FireMonkey.DAE 의 텍스처가 TGA 형식인데, Delphi/C++Builder 가 TGA 에 대응하고 있지 않기 때문입니다.
이전 버전에서는 지원되지 않는 텍스처를 로드하지 않았으므로 오류가 발생하지 않았지만 텍스처가 없는 FireMonkey 군이 로드되었습니다.
대책
결론에서 말하면 텍스처를 TGA에서 PNG로 변환하면 됩니다. 소나무 t. 뿌리 T 등으로 변환할 수 있습니다.

네 개의 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 모델을 읽어야 할지도 모릅니다.
카미노 감음의 애완 동물도 FireMonkey 군입니다만, 개인적으로는 이쪽의 3D 모델을 갖고 싶네요- (w

Reference
이 문제에 관하여(【Delphi】FireMonkey 군의 3D 모델 데이터를 보통으로 읽는다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ht_deko/items/b781bf678804e92370a5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)