none
WPF在3D模型(如正方体) 在六个面贴不同的图片? RRS feed

答案

  • 你好,

    我想你可以按照以下描述去完成向3D图形的表面贴图像。

    你可以尝试创建一个ImageBrush 和 VisualBrush,据我所知,WPF对于3D的图形没有特殊的Brush,因此我们只能用二维的Brush去向三维的图像表面画图像。我们如果想创建使用多个材料的 Model3D,就必须使用 Model3DGroup 类来组合多个 GeometryModel3D 对象,而 GeometryModel3D  又由 MeshGeometry3D 和一个 Material 组成,这样我想我们可以对于一个 MeshGeometry3D 使用一个Brush,然后不同的图片对于不同的立方体表面,这样我想就实现你的需求了。下面的链接是关于MSDN上面的一些参考资料,你可以参考我说的一些类。

    http://msdn.microsoft.com/zh-cn/library/system.windows.media.media3d.geometrymodel3d.aspx

    http://msdn.microsoft.com/zh-cn/library/system.windows.media.media3d.meshgeometry3d.aspx

    http://msdn.microsoft.com/zh-cn/library/system.windows.media.media3d.material.aspx

    我有一个例子你可以参考一下,通过这个例子你可以更好的理解我解释的内容,同样,根据这个例子你也可以完成你自己的需求,这个例子的下载链接是:

    http://cid-41e44c402aaada87.office.live.com/self.aspx/3DCubeWithImage/Fun.zip

    Best regards,


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月16日 14:10
    版主
  • 3Q 已解决~
    • 已标记为答案 yimi55555 2011年2月17日 13:12
    2011年2月17日 6:13
  •  <Grid>
        <tools:TrackballDecorator>
          <Viewport3D>
            <Viewport3D.Camera>
              <PerspectiveCamera Position="4 3 2" LookDirection="-4 -3 -2" />
            </Viewport3D.Camera>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <AmbientLight />
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,1 -1,-1,1 1,-1,1 1,1,1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Red"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="1,1,-1 1,-1,-1 -1,-1,-1 -1,1,-1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Yellow"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,-1 -1,-1,-1 -1,-1,1 -1,1,1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Green"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="1,1,1 1,-1,1 1,-1,-1 1,1,-1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Blue"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,-1 -1,1,1 1,1,1 1,1,-1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Orange"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,-1,1 -1,-1,-1 1,-1,-1 1,-1,1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Gold"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
          </Viewport3D>
        </tools:TrackballDecorator>
      </Grid>
    
     <!--只需要将SolidColorBrush换成ImageBrush就可以了-->
    
     
    
    2011年2月18日 9:06

全部回复

  • 你好,

    我想你可以按照以下描述去完成向3D图形的表面贴图像。

    你可以尝试创建一个ImageBrush 和 VisualBrush,据我所知,WPF对于3D的图形没有特殊的Brush,因此我们只能用二维的Brush去向三维的图像表面画图像。我们如果想创建使用多个材料的 Model3D,就必须使用 Model3DGroup 类来组合多个 GeometryModel3D 对象,而 GeometryModel3D  又由 MeshGeometry3D 和一个 Material 组成,这样我想我们可以对于一个 MeshGeometry3D 使用一个Brush,然后不同的图片对于不同的立方体表面,这样我想就实现你的需求了。下面的链接是关于MSDN上面的一些参考资料,你可以参考我说的一些类。

    http://msdn.microsoft.com/zh-cn/library/system.windows.media.media3d.geometrymodel3d.aspx

    http://msdn.microsoft.com/zh-cn/library/system.windows.media.media3d.meshgeometry3d.aspx

    http://msdn.microsoft.com/zh-cn/library/system.windows.media.media3d.material.aspx

    我有一个例子你可以参考一下,通过这个例子你可以更好的理解我解释的内容,同样,根据这个例子你也可以完成你自己的需求,这个例子的下载链接是:

    http://cid-41e44c402aaada87.office.live.com/self.aspx/3DCubeWithImage/Fun.zip

    Best regards,


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月16日 14:10
    版主
  • 3Q 已解决~
    • 已标记为答案 yimi55555 2011年2月17日 13:12
    2011年2月17日 6:13
  • 你好,

    很开心你能解决问题。

    我建议你如果问题解决了,可以关闭你的帖子(标记为答复),这样有利于其他的成员阅读你的帖子,并且通过你的帖子找到自己想要的答案,或者是有帮助的信息。

    同时,如果你觉得回复对你有帮助的话,你可以点击头像下面的绿色小三角去表示有帮助。

    谢谢

     

    Best regards,


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月17日 9:52
    版主
  • 能分享一下你的解决方案么?

    你这样给你自己的“已解决”标记为答案,如果别人遇到了跟你一样的问题 如何通过你的帖子找到答案呢?

    这样对论坛上其他成员是一个困惑。

    这里提问不仅是为了自己能够解决问题,而且对于其他成员也是帮助,大家可以在这里记录我们开发过程中的问题,通过讨论,总结去提高我们的开发效率,解决我们开发中的问题,最后提高我们的产品质量。

    很感谢你能在论坛中提问,如果你能分享一下你的经验,我将更加的感谢你。

     

    Best regards,


    Sheldon _Xiao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年2月17日 18:14
    版主
  •  <Grid>
        <tools:TrackballDecorator>
          <Viewport3D>
            <Viewport3D.Camera>
              <PerspectiveCamera Position="4 3 2" LookDirection="-4 -3 -2" />
            </Viewport3D.Camera>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <AmbientLight />
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,1 -1,-1,1 1,-1,1 1,1,1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Red"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="1,1,-1 1,-1,-1 -1,-1,-1 -1,1,-1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Yellow"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,-1 -1,-1,-1 -1,-1,1 -1,1,1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Green"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="1,1,1 1,-1,1 1,-1,-1 1,1,-1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Blue"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,1,-1 -1,1,1 1,1,1 1,1,-1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Orange"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>
                  <GeometryModel3D.Geometry>
                    <MeshGeometry3D Positions="-1,-1,1 -1,-1,-1 1,-1,-1 1,-1,1"
                        TriangleIndices="0 1 2 0 2 3" />
                  </GeometryModel3D.Geometry>
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <SolidColorBrush Color="Gold"/>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
          </Viewport3D>
        </tools:TrackballDecorator>
      </Grid>
    
     <!--只需要将SolidColorBrush换成ImageBrush就可以了-->
    
     
    
    2011年2月18日 9:06