如何通过Binding在GroupModel3D中显示PointGeometryModel3D

How to display PointGeometryModel3D in GroupModel3D via Binding

我正在使用 SharpDX 加载和显示模型。

<hx:Viewport3DX  EffectsManager="{Binding EffectsManager}" 
                   Camera="{Binding Camera}" ModelUpDirection="0,0,1">
    <hx:AmbientLight3D Color="{StaticResource ModelAmbientLightColor}" />
    <hx:DirectionalLight3D Direction="{Binding Camera.LookDirection}" Color="{StaticResource ModelDirectionalLightColor}" />
    <hx:Element3DPresenter Content="{Binding MainModel}" />
    <hx:GroupModel3D ItemsSource="{Binding ListOfAdditionalModels}"/>
  </hx:Viewport3DX>

列表 'ListOfAdditionalModels' 是 MeshGeometryModel3D 的 ObservableElement3DCollection。 这按预期工作。所有 models/3d 项都正确显示。

现在我基本上想对 PointGeometryModel3D 列表执行相同的操作。但是它不会显示任何东西。

<hx:Viewport3DX EffectsManager="{Binding EffectsManager}" 
                Camera="{Binding Camera}" ZoomExtentsWhenLoaded="True" 
                 > 
    <hx:AmbientLight3D Color="#030303" />
    <hx:DirectionalLight3D Direction="{Binding Camera.LookDirection}" Color="White" />
    <hx:GroupModel3D ItemsSource="{Binding ListOfPointCloudModels, UpdateSourceTrigger=PropertyChanged}" >
    </hx:GroupModel3D>

这是怎么回事?我想我必须告诉 GroupModel 使用其项目的 'Geometry' 属性。但是我不知道怎么办。

直接使用列表 'ListOfPointCloudModels' 中的一个 PointGeometryModel3D 效果很好:

<hx:Viewport3DX EffectsManager="{Binding EffectsManager}" 
            Camera="{Binding Camera}" BackgroundColor="#FF88AACD" ZoomExtentsWhenLoaded="True" >
    <hx:AmbientLight3D Color="#030303" />
    <hx:DirectionalLight3D Direction="{Binding Camera.LookDirection}" Color="White" />
    <hx:PointGeometryModel3D Color="{x:Static Colors.White}"  
                             Geometry="{Binding PointsModel.Geometry}" Figure="Rect" Size="10 10" >          
    </hx:PointGeometryModel3D>
  </hx:Viewport3DX>

解决方案是使用 ItemsModel3D 而不是 GroupModel3d 并定义项目模板:

<hx:ItemsModel3D ItemsSource="{Binding ListOfPointCloudModels}" >
      <hx:ItemsModel3D.ItemTemplate>
        <DataTemplate>
          <hx:PointGeometryModel3D Geometry="{Binding Geometry}" Color="{x:Static Colors.White}" Figure="Rect" Size="2 2"/>
        </DataTemplate>
      </hx:ItemsModel3D.ItemTemplate>
    </hx:ItemsModel3D>