Collada 中彩色立方体的最小示例(显示在 Google 地球中)?

Posted

技术标签:

【中文标题】Collada 中彩色立方体的最小示例(显示在 Google 地球中)?【英文标题】:Minimal example for a colored cube in Collada (displayed in Google Earth)? 【发布时间】:2014-12-18 15:24:20 【问题描述】:

我在 Collada 中创建了以下多维数据集,我通过在 KML 文件中引用它在 Google-Earth 中显示它。但是,我没有成功地为立方体(例如所有三角形)赋予特定的颜色。目前,在 Collada 文件中更改任何内容(不仅仅是与颜色相关的属性)时,颜色会随机变化。如何确保 Cube 变成红色?

<?xml version="1.0"?>
<COLLADA>
  <asset>
    <up_axis>Z_UP</up_axis>
  </asset>
  <library_materials>
    <material id="Color">
      <instance_effect url="#phongEffect">
        <emission>
          <color>0.502 0.502 0.0 1.0</color>
        </emission>
      </instance_effect>
    </material>
  </library_materials> 
  <library_geometries>
    <geometry id="geom-Box01" name="Box01">
      <mesh>
    <source id="positions">
      <float_array id="positions-array" count="24">
        0 0 0
        0 0 1
        0 1 0
        1 0 0
        0 1 1
        1 0 1
        1 1 0
        1 1 1
      </float_array>
      <technique_common>
        <accessor source="#positions-array" count="8" stride="3"> 
          <param name="X" type="float"/>
          <param name="Y" type="float"/>
          <param name="Z" type="float"/>
        </accessor>
      </technique_common>
    </source>

    <source id="normals">
      <float_array id="normals-array" count="18">
        1 0 0
        -1 0 0
        0 1 0
        0 -1 0
        0 0 1
        0 0 -1
      </float_array>
      <technique_common>
        <accessor source="#normals-array" count="8" stride="3"> 
          <param name="X" type="float"/>
          <param name="Y" type="float"/>
          <param name="Z" type="float"/>
        </accessor>
      </technique_common>
    </source>

    <vertices id="vertices">
      <input semantic="POSITION" source="#positions"/>
    </vertices>

    <triangles name="sample_triangles" count="24" color="Color">
      <input semantic="VERTEX" source="#vertices" offset="0"/>
      <input semantic="NORMAL" source="#normals" offset="1"/>
      <p> 
         0 5 3 5 2 5
         2 5 3 5 0 5
         2 5 3 5 6 5
         6 5 3 5 2 5
         5 0 3 0 7 0
         7 0 3 0 5 0
         7 0 3 0 6 0
         6 0 3 0 7 0
         1 4 5 4 7 4
         7 4 5 4 1 4
         7 4 1 4 4 4
         4 4 1 4 7 4
         0 1 1 1 4 1
         4 1 1 1 0 1
         4 1 0 1 2 1
         2 1 0 1 4 1
         1 3 5 3 3 3
         3 3 5 3 1 3
         3 3 1 3 0 3
         0 3 1 3 3 3
         4 2 7 2 6 2
         6 2 7 2 4 2
         6 2 4 2 2 2
         2 2 4 2 6 2
       </p> 
      </triangles>
     </mesh>
    </geometry>
  </library_geometries>

  <library_visual_scenes>
    <visual_scene id="MaxScene">
      <node id="node-Box01" name="Box01">
        <instance_geometry url="#geom-Box01">
        </instance_geometry>
      </node>
    </visual_scene>
  </library_visual_scenes>
  <scene>
    <instance_visual_scene url="#MaxScene"/>
  </scene>
</COLLADA>

【问题讨论】:

【参考方案1】:

triangles 元素没有 Color 属性,将其替换为 Material。 还要查看 instance_geometry 元素中的 bind_material。

【讨论】:

以上是关于Collada 中彩色立方体的最小示例(显示在 Google 地球中)?的主要内容,如果未能解决你的问题,请参考以下文章

Qt 中彩色图像转换为灰度图

mapgis6.7中彩色tif文件转换成msi文件,打开成了黑白色

将带有物理的 collada 场景加载到 SceneKit

如何处理 COLLADA 指数?

在 Three.js 中使用来自 COLLADA 文件的解析数据的骨骼动画

引擎测试:在屏幕上渲染立方体 (OpenGL)