效果图预览:

1. 3d中的命中测试

我新建了一个空的窗口,用zam做了一个长方体,深度很小。然后导出xaml

<Viewport3D x:Name="ZAM3DViewport3D" ClipToBounds="true" Width="400" Height="300" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/interactivedesigner/2006" xmlns:c="http://schemas.openxmlformats.org/markup-compatibility/2006" c:Ignorable="d">
<Viewport3D.Resources>
<ResourceDictionary>
<MaterialGroup x:Key="ER___Flat_06MR1" >
<DiffuseMaterial>
<DiffuseMaterial.Brush>
<SolidColorBrush Color="#999999" Opacity="1.000000"/>
</DiffuseMaterial.Brush>
</DiffuseMaterial>
</MaterialGroup>
<Transform3DGroup x:Key="SceneTR7" >
<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
<ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="0" Axis="0 1 0"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
</Transform3DGroup>
<Transform3DGroup x:Key="立方体OR9TR8" >
<TranslateTransform3D OffsetX="0" OffsetY="0" OffsetZ="0"/>
<ScaleTransform3D ScaleX="1" ScaleY="1" ScaleZ="1"/>
<RotateTransform3D>
<RotateTransform3D.Rotation>
<AxisAngleRotation3D Angle="0" Axis="0 1 0"/>
</RotateTransform3D.Rotation>
</RotateTransform3D>
<TranslateTransform3D OffsetX="-0.258329" OffsetY="0.0941457" OffsetZ="-0.662509"/>
</Transform3DGroup>
<MeshGeometry3D x:Key="立方体OR9GR10"
TriangleIndices="0,1,2 2,3,0 4,5,6 6,7,4 8,9,10 10,11,8 12,13,14 14,15,12 16,17,18 18,19,16 20,21,22 22,23,20 "
Normals="0,0,-1 0,0,-1 0,0,-1 0,0,-1 0,0,1 0,0,1 0,0,1 0,0,1 0,-1,0 0,-1,0 0,-1,0 0,-1,0 1,0,0 1,0,0 1,0,0 1,0,0 0,1,0 0,1,0 0,1,0 0,1,0 -1,0,0 -1,0,0 -1,0,0 -1,0,0 "
Positions="-0.66,-0.405,0 -0.66,0.405,0 0.66,0.405,0 0.66,-0.405,0 -0.66,-0.405,0 0.66,-0.405,0 0.66,0.405,0 -0.66,0.405,0 -0.66,-0.405,0 0.66,-0.405,0 0.66,-0.405,0 -0.66,-0.405,0 0.66,-0.405,0 0.66,0.405,0 0.66,0.405,0 0.66,-0.405,0 0.66,0.405,0 -0.66,0.405,0 -0.66,0.405,0 0.66,0.405,0 -0.66,0.405,0 -0.66,-0.405,0 -0.66,-0.405,0 -0.66,0.405,0 "
/>
</ResourceDictionary>
</Viewport3D.Resources> <Viewport3D.Camera>
<PerspectiveCamera x:Name="前视OR6" FarPlaneDistance="10" LookDirection="0,0,-1" UpDirection="0,1,0" NearPlaneDistance="2" Position="0,0,2.38396" FieldOfView="39.5978" />
</Viewport3D.Camera> <ModelVisual3D>
<ModelVisual3D.Content>
<Model3DGroup x:Name="Scene" Transform="{DynamicResource SceneTR7}"> <!-- 场景 (XAML Path = ) -->
<AmbientLight Color="#333333" />
<DirectionalLight Color="#FFFFFF" Direction="0.0397419,0.00265522,-0.999206" />
<DirectionalLight Color="#FFFFFF" Direction="0.648078,0.0259535,-0.761131" />
<Model3DGroup x:Name="立方体OR9" Transform="{DynamicResource 立方体OR9TR8}"> <!-- 立方体 (XAML Path = (Viewport3D.Children)[0].(ModelVisual3D.Content).(Model3DGroup.Children)[3]) -->
<GeometryModel3D x:Name="立方体OR9GR10" Geometry="{DynamicResource 立方体OR9GR10}" Material="{DynamicResource ER___Flat_06MR1}" BackMaterial="{DynamicResource ER___Flat_06MR1}"/>
</Model3DGroup>
</Model3DGroup>
</ModelVisual3D.Content>
</ModelVisual3D>
</Viewport3D>

我们给ModelVisual3D.Transform中的RotateTransform3D中的AxisAngleRotation3D加上一个名字axisRotation

内容已经迁移到:http://www.ayjs.net/post/62.html

OK,到目前为止,WPF的基础3D知识已经讲完了,谢谢你的阅读。

       =============潇洒的版权线==========www.ayjs.net===== Aaronyang ========= AY =========== 安徽 六安 杨洋 ==========   未经允许不许转载 =========

       -------------------小小的推荐,作者的肯定,读者的支持。推不推荐不重要,重要的是希望大家能把WPF推广出去,别让这么好的技术消失了,求求了,让我们为WPF技术做一份贡献。-----------------

[Aaronyang] 写给自己的WPF4.5 笔记23 [3d交互与动画 4/4]的更多相关文章

  1. [Aaronyang] 写给自己的WPF4.5 笔记22 [3d交互与动画 3/4]

    OK,前面我们的3d模型都比较囧啊,最近也看了一点ZAM了解了一下,大致至少可以做个简单的模型用来演示. 1.交互,动起来的思路 ①修改Model3D对象的变换 ②修改应用于ModelVisual3D ...

  2. [Aaronyang] 写给自己的WPF4.5 笔记21 [3d课 2/4]

    1. 当然复杂的3d模型我们是可以通过更专业的工具做出来,然后导入项目中,我们只是方便演示,选择简单的图形. Tip: 关于摄像机的NearPlaneDistance和FarPlaneDistance ...

  3. [Aaronyang] 写给自己的WPF4.5 笔记20 [3d课 1/4]

    假设你是高中毕业的,ok,数学知识几何知识中,我们学过  x,y,z   3个轴然后就可以画出形状了. 1. 新建空白窗体,grid换成canvas,然后新增一个Viewport3D元素 3d中显示的 ...

  4. [Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]

    原文:[Aaronyang] 写给自己的WPF4.5 笔记15[AyArc诞生-WPF版本绚丽的环状图,Ay制作,AyWindow强势预览]  我的文章一定要做到对读者负责,否则就是失败的文章  -- ...

  5. [Aaronyang] 写给自己的WPF4.5 笔记13[二维自定义控件技巧-可视化状态实战,自定义容器,注册类命令,用户控件补充]

     我的文章一定要做到对读者负责,否则就是失败的文章  ---------   www.ayjs.net    aaronyang技术分享 博文摘要:欢迎大家来支持我的<2013-2015 Aar ...

  6. [Aaronyang] 写给自己的WPF4.5 笔记19[Visual类图文并茂讲解]

    文章虽小,内容还好,且看且珍惜. aaronyang版权所有,不许转载,违者必究 当界面上使用数千个矢量图形,例如实时统计图,粒子碰撞,比如超级玛丽游戏,图像一直在绘,过量的使用WPF的元素系统和Sh ...

  7. [Aaronyang] 写给自己的WPF4.5 笔记[2依赖属性]

    人生的意义不在于拿一手好牌,而在于打好一手坏牌 --Aaronyang的博客(www.ayjs.net)-www.8mi.me =============时隔两年后再看WPF========== 因为 ...

  8. [Aaronyang] 写给自己的WPF4.5 笔记24 [与winform交互-flash-DEMO-收尾篇1/6]

      =====潇洒的版权线======www.ayjs.net===== Aaronyang ===== AY ====== 安徽 六安 杨洋 ======   未经允许不许转载 ====== 1.新 ...

  9. [Aaronyang] 写给自己的WPF4.5 笔记[3MenuItem中的icon]

    敢于尝试,就等于你已经向成功迈出了第一步 --Aaronyang的博客(www.ayjs.net)-www.8mi.me =============时隔两年后再看WPF========== 因为以前的 ...

随机推荐

  1. BZOJ 4247: 挂饰 题解

    Description JOI君有N个装在手机上的挂饰,编号为1...N. JOI君可以将其中的一些装在手机上. JOI君的挂饰有一些与众不同--其中的一些挂饰附有可以挂其他挂件的挂钩.每个挂件要么直 ...

  2. HTTP学习笔记(1)ULR语法

    1,概述 当你打开一个浏览器则会进入一个主页,也许你会想只是打开了浏览器罢了,但是浏览器默默的把这个主页默认的网址发送出去,你只是不知道而已,你只是没有输入而已.我们来做个实验. 1,双击打开 2,可 ...

  3. String reorder

    本问题出自:微软2014实习生及秋令营技术类职位在线测试 (Microsoft Online Test for Core Technical Positions) Description For th ...

  4. javascript的原型与继承(2)

    这是上一篇的后续. Javascript是一种基于对象的语言,遇到的所有东西几乎都是对象.如果我们想要把属性和方法封装成一个对象,应该怎么做呢: 假设我们把猫看成一个对象: var Cat = { n ...

  5. php 和mysql httpd 简单网页的搭建

    使用两台服务器 Centos 7 做 php和httpd和php-sql 服务的安装  CentOS 5 做php 和 mysql 的安装 1.搭建本地yum源 两台服务器  都是 2.关闭防火墙和s ...

  6. 搭建struts2框架

    struts是一个经典的MVC模式拦截器比过滤器拦截的力度更大 搭建struts2框架1.引入lib包 9个(2.3版本的)common-fileupload;common-io;common-lan ...

  7. Element should have been select but was input

    Element should have been select but was input-----看起来像下拉框,但实际不是下拉框的元素内容操作方法如下两名,先点击这个input,再单点要选择的值, ...

  8. linux-01Red Hat Enterprise Linux 7(RHEL7)配置静态IP地址

    为方便在学习linux readhat7,在本地安装安装了虚拟机.为能够用win7连接虚拟机的linux远程客户端操作,则需要虚拟机和win本地的网络互通: 操作如下:1.本地配置ip地址 : 2.验 ...

  9. Oracle必须死之奇怪的ORA-06502错误

    作为熟练.Net码农以及非熟练Oracle用户很多时候Oracle总给我一种这货就是存心恶心我们的感觉. 虽然不得不承认Oracle是个很(an)好(gui)的产品,但是总有那么好几下被恶心到了.比如 ...

  10. windows上自动设置java环境变量的脚本

    近期打算学习安卓开发,于是乎要准备java开发环境,安装好jdk后,就要设置java环境变量,java环境变量要设置JAVA_HOME,Path,CLASSPATH三个值,每次配置查百度复制粘贴都很麻 ...