none
关于wpf3D 透明显示的问题 RRS feed

  • 问题

  •  

    简化问题如下:
    <age x:Class="wpf_vislink.TestPage"
           xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         WindowTitle="Six Squares in Search of a Cube"
         Title="Six Squares in Search of a Cube">

       <Viewport3D>
           <ModelVisual3D>
               <ModelVisual3D.Content>
                   <Model3DGroup>

                       <!-- Rectangle One. -->
                       <GeometryModel3D>
                           <GeometryModel3D.Geometry>
                               <MeshGeometry3D
                                   Positions="-0.5 -0.5 0, -0.5 0.5 0, 0.5 -0.5 0, 0.5 0.5 0"
                                   TriangleIndices="0 2 1, 1 2 3" />
                           </GeometryModel3D.Geometry>

                           <GeometryModel3D.Material>
                               <DiffuseMaterial>
                                   <DiffuseMaterial.Brush>
                                       <SolidColorBrush Color="Blue" Opacity="0.5"/>
                                   </DiffuseMaterial.Brush>
                               </DiffuseMaterial>
                           </GeometryModel3D.Material>
                       </GeometryModel3D>
                       <!-- Rectangle Two. -->
                       <GeometryModel3D>
                           <GeometryModel3D.Geometry>
                               <MeshGeometry3D
                                   Positions="0 0 -1, 0 1 -1, 1 0 -1, 1 1 -1"
                                   TriangleIndices="0 2 1, 1 2 3" />
                           </GeometryModel3D.Geometry>

                           <GeometryModel3D.Material>
                               <DiffuseMaterial>
                                   <DiffuseMaterial.Brush>
                                       <SolidColorBrush Color="Green" Opacity="0.5" />
                                   </DiffuseMaterial.Brush>
                               </DiffuseMaterial>
                           </GeometryModel3D.Material>
                       </GeometryModel3D>

                       <!-- Light source. -->
                       <AmbientLight Color="White" />

                   </Model3DGroup>
               </ModelVisual3D.Content>
           </ModelVisual3D>

           <!-- Camera. -->
           <Viewport3D.Camera>
               <OrthographicCamera Position="0 0 3"
                                  LookDirection="0 0 -1"
                                  UpDirection="0 1 0"
                                  />
           </Viewport3D.Camera>
       </Viewport3D>

    </Page>
    效果如下:
    http://lh5.ggpht.com/Phang.Aaron/SPB3jiiexiI/AAAAAAAAAJo/Hwg9C_x15h8/3.jpg
    可是我期望的是能够透过蓝矩形看到绿矩形,但结果是看不到。如果将蓝矩形放的比绿矩形远(z值设为-2),则可以通过绿矩形看到蓝矩形,

    效果如下:
    http://lh6.ggpht.com/Phang.Aaron/SPBzbnfzzKI/AAAAAAAAAJI/QPbXqFc2XDI/4.jpg
    这是为什么?除了Opacity之外有没有其它属性可以设置的?

    I appreciate your answer. Thanks very much!
    2008年10月11日 10:17

全部回复

  • Has your problem been solved? In the all children of viewport3d, the former element could be seen through the latter element, however, the latter one cannot been seen through the former one. So if you reorder the children of viewport3d after every adjustment, you could make it.

    If you have better solution, please reply to me.

    2012年2月8日 6:05
  • 对象在3D场景中的加载顺序会影响透视效果,先加载的对象无法透视后加载的对象。目前我还没找到解决方法
    2012年2月9日 1:09
  • 我也碰到过类似的问题

    我理解,比如 你第一次添加了一个Rectangle1 然后又添加了一个Rectangle2

    那么rect2则在rect1的上层,只要rect2设置opacity就可以透过本身看到rect1

    但是不管怎么设置rect1,你都无法透过rect1本身看到rect2

    因为rect2在rect1的上层


    Hero

    2012年2月9日 4:55
  • 解决方法是有的,我以前下过一个3D的例子,当时没有碰到这样的问题.

    后来碰到了,问Bob Bao,他发了个地址给我.

    发现就是我以前下的例子

    这里是地址http://www.codeproject.com/Articles/25030/Animating-Interactive-2D-Elements-in-a-3D-Panel

    感谢Bob Bao


    Hero

    2012年2月9日 8:07