farseer box2d物理引擎擎 怎么样

精彩的 Silverlight 开源项目 - 编程快客 - ITeye博客
博客分类:
Silverlight 物理模型
是Silverlight中的一套控件,他能直接帮助你套用
这个物理引擎。在制作动画中能帮你节省大量的时间。
The Farseer Physics Engine is an easy to use 2D physics engine designed for Microsoft’s XNA
and Silverlight
platforms. The Farseer Physics Engine focuses on simplicity, useful features, and enabling the creation of fun, dynamic games.
Silverlight Cairngorm
这个词做过flex开发的朋友应该不会陌生,Cairngorm是Flex开发中的一个MVC框架,由
官方提供支持。现在Silverlight也有了Cairngorm这个框架的实现
Currently,
When developing enterprise applications, or building a large scale LOB
application in Silverlight, client side architecture becomes important
for "development salability". Although there is some
, none of them can be easily applied to Silverlight. Adobe's
has been broadly used in the Flex RIA application since 2006; it has
easy-to-understand concepts, well-recognized design patterns, and has
proved to work well to scale large line-of-business applications'
development. This article describes the efforts of porting Cairngorm to
Silverlight (Beta 2) in Visual Studio 2008 SP1, provides details about
which concepts/classes have been adopted and what has been dropped, and
also includes a
to demonstrate how it works and how it's intended to use. It helped me a
lot to create a Silverlight prototype at work for a potential large
scale consumer-oriented f wish this effort would be
useful to other Silverlight developers.
什么是 Unity?
What’s New?
The following capabilities and packaging of the Unity container have been adjusted in this release:
– The single
Microsoft.Practices.Unity.dll file in the Silverlight version contains
all the classes from the three separate desktop DLLs:
Microsoft.Practices.Unity.dll, Microsoft.Practices.ObjectBuilder2.dll,
and Microsoft.Practices.Unity.StaticFactoryExtension.dll. You only need
to reference and deploy the one assembly in your Silverlight projects.
– Because of differences in the
Silverlight security model, only public types can be created and
injected by the container. The desktop version allows you to also inject
internal types.
– XML configuration is not supported.
- The Unity interception mechanism is not supported.
ScatterView
ScatterView是一个布局控件,允许对其内部的子控件进行鼠标拖拽、扔出等操作。
项目地址:
下载DlLL文件,其中包含两个文件:
、ScatterView.dll。ScatterView.dll是主文件
是用来做动画效果的,
有对他的介绍。下载了文件后在Silverlight项目中添加引用。
在page.xaml的头部添加代码
xmlns:ScatterView="clr-namespace:ScatterVassembly=ScatterView"
把ScatterView控件放入page中
&scatterview:scatterview margin="5,5,5,5" horizontalalignment="Stretch"
x:name="xScatterView"&
&/scatterview:scatterview&
在后台添加子控件
xScatterView.AddChild(UIElement1
, UIElement2
这里说明一下,第一个参数是真正要添加的子控件,第二个参数是子控件的阴影,如果没有,用null代替。
这里我做了一个使用的小demo,可根据google
获取相册数据并将获取到的照片缩略图放入ScatterView容器控件中。右下角的GetTarot按钮是内置的一套塔罗牌。
demo全部源代码下载:
jiasongmao
浏览: 392366 次
来自: 重庆
./usr/bin/java: symbol lookup
不错的, 收藏一下
大哥,密码是多少啊?谢谢了!新手学习 ...
jiasongmao 写道你的邮箱是多少,我可以发源代码到邮箱 ...
WPF新手,发份code学习学习,谢谢。@q ...漫谈C#编程语言在游戏领域的应用
我的图书馆
漫谈C#编程语言在游戏领域的应用
回到目录0x00 前言随着微软越来越开放,C#也变得越来越吸引人们的眼球。而在游戏行业中,C#也开始慢慢地获得了关注。这不, 网易绝代双娇手游团队已经全面使用.Net Core支持前后端统一C#开发,跨平台部署了。所以,我们就来总结一下C#在游戏行业中一些具体的应用吧。回到目录0x01 游戏引擎说道游戏领域的应用,自然应该先来说说游戏引擎:Unity ()不必多说了吧,随着“移动为王”潮流的到来,Unity3D也变得越来越流行。使用C/C++开发,提供C#作为脚本。移动游戏开发必备神器,而且随着VR热潮的到来,使用U3D开发VR内容也十分便利。总之,你值得拥有。Axiom ()Axiom是一款开源且跨平台的3D渲染引擎,提供了对Windows, Linux, Android, iPhone以及Windows Phone等各个平台的支持。了解游戏开发的小伙伴们一定听说过OGRE渲染引擎吧?Axiom使用C#移植了OGRE。Torque X()由GarageGames开发的一款基于XNA的2D/3D游戏引擎(但是不支持XNA Game Studio 4.0)。使用C#开发,目标平台主要是PC以及XBox。但是很多功能都没有开发完毕,目前已经被废弃。truevision3d()底层使用C/C++开发,不过提供对VB6, VB.Net, C#, Delphi,APL和BlitzMax的支持。相信各位能够迅速上手。Xenko()来自日本的开发商SiliconStudio,开发商十分靠谱。且和Unity3D相比,Xenko支持最新的版本的C#6和.Net4.6。且由于借助了Xamarin,因此在跨平台策略上不比Unity3D差。而且,它还是免费的,不过由于使用了GPL3协议,因此如果是自己去修改引擎代码就必须公开。个人觉得很有意思且值得研究的一个游戏引擎。回到目录0x02 图像相关XNA 不必多说了吧。微软自家的东西。XNA中的X表示能够在WindowsXbox和合作伙伴之间达到跨平台的强大的软件工具。N表示“下一代(Next-generation)”,A表示“架构(Architecture)”。基于DirectX的游戏开发环境。使用c#对directx进行了封装。可以在xbox360和pc间实现跨平台。OpenTK()封装了OpenGL, OpenCL以及OpenAL的C#库。SDL.Net()SDL(Simple DirectMedia Layer)库的C#版本。SlimDX ()SlimDX是一个免费开源的框架,基于DirectX,开发者可以使用 C#, VB.NET, 或者IronPython进行开发。回到目录0x03 物理相关Box2Dx()我相信Box2D各位应该十分了解,那么Box2Dx便是Box2D的C#版本。Box2D.XNA ()和上面的类似,当然对Xbox 360做了特别的优化。Farseer()同样是一个2d物理引擎,支持C#。当然它也基于Box2D,因此和Box2D有很多相同的功能。Jitter()最后介绍一个3D的物理引擎。支持使用C#。回到目录0x04 结语可以看到,C#在微软支持开源之前就已经在游戏领域有了很多应用。希望现在在微软开源的支持之下,C#能够在游戏领域获得更多的关注。
TA的最新馆藏[转]&[转]&
喜欢该文的人也喜欢Professional XNA Game Programming学习笔记
相关源代码下载
第五章涉及到3D编程,建议先看一下从网上收集的,附),然后还有从 网站下载的Shader教程:
Shader教程系列
。简单的游戏漫反射够用了,开始涉及基本数学原理了。源代码下载。
。可以模拟光滑、有光泽或磨光的表面。源代码下载。
觉得原文的教程有点跳跃,所以在教程3和4之间整理了一下使用纹理的基本方法。源代码下载。
解释了逐顶点和逐像素光照的区别,其他源代码好像都是使用逐像素光照模型。源代码下载。
这个例子比较简单。源代码下载。
。使用法线映射可以让少量多边形构成的模型看起来具有丰富的细节,而视觉效果大量多边形构成的几乎一样,现今很多游戏都使用了法线映射。源代码下载。
。建议你可以试着用键盘控制物体沿xyz方向的变形。源代码下载。
。在前几个教程的基础上实现了天空球和水面。源代码下载。
。这是一项将3D物体转为类似2D手绘的卡通风格的技术。源代码下载。
。通过光泽贴图可以控制模型不同部位的镜面反射强度。源代码下载。
这个例子来自于,。使用了四种技术:颜色贴图,就是教程2的漫反射;发光贴图是新的,用一张额外的贴图控制漫反射强度,这个例子中表现出地球上的大城市的灯光效果;凹凸贴图,就是教程4的法线贴图,严格地说法线贴图只是凹凸贴图的一种,凹凸贴图还包含视差映射(Parallax
Mapping)等;反射贴图就是教程8的光泽贴,通过一张额外的纹理控制模型不同部位的镜面反射强度,这个例子中让地球上的海面反射强度比陆地大。源代码下载。
。《Professional
XNA Game Programming: For Xbox 360 and Windows》一书中用了一章的篇幅介绍了PostScreen Shader,有些地方把PostScreen翻译成离屏或后屏,我就保留英文了。这个shader的基本思路就是先将场景绘制到一张纹理中(这叫做Render To RenderTarget,渲染到渲染目标),想了解工作原理,请见,然后对这个纹理施加各种滤镜效果,熟悉Photoshop的人对滤镜肯定不陌生,原理不难,唯一的限制就是用什么算法和你的想象力了,《Professional XNA Game Programming》一书的后三个游戏都使用了PostScreen Shader让画面更漂亮。源代码下载。
。非常简单的一个算法,实现了反相的效果。这让我想起了《生化危机3》中当“追击者”出现时伴随着一声心脏跳动的声音,画面暂停并反相,表现出吃了一惊的效果。源代码下载。
。使用两种不同的算法实现了图片灰度。源代码下载。
。通过随机函数实现噪点效果。源代码下载。
。通过一张Alpha贴图控制模型的透明程度。源代码下载。
。此教程涉及了Framebuffer,BackBuffer,ZBuffer,DepthBuffer,StencilBuffer,我总结了一下,放在本文的最后部分。源代码下载。
。这个教程有点难,我认为讲得也不够清晰,下次我会整理一个简单的反射、折射、动态反射例子的,还有源代码中可以使用X360手柄控制一些变量,我自己添加了键盘控制,用上下左右控制世界矩阵,用ADWS控制Du变量和C变量。源代码下载。
。只需使用HLSL的内置refract函数计算折射向量。源代码下载。
相对于教程2中的单向光,点光源还要计算衰减,光照方程更加复杂。源代码下载。
在教程17的基础上,运算n次点光源光照方程然后叠加。源代码下载。
相对于教程1中不变的全局环境光颜色,通过计算向上方向和法线方向的点乘获取不同的环境光颜色,更加真实。源代码下载。
首先应该看懂教程23-模糊,然后再看这个教程,景深效果的关键在于计算出当前像素是否处于焦点上,然后根据判断结果混合原始纹理和经过模糊的纹理。源代码下载。
。主要思路是将两个场景绘制到两个渲染目标中,并使用HLSL的内置lerp函数对两者进行插值。源代码下载。
。在前一个教程基础上还使用了另一个HLSL内置函数smoothstep。源代码下载。
模糊的基本思路就是不从当前像素采样颜色,而是采样周边像素的颜色并取它们的平均值。源代码下载。
基本思路就是在shader中移除亮度低于临界值的颜色并施加模糊效果,这与中的Glow算法上还是有区别的。源代码下载。
基本思路就是绘制一些水平方向的切片,切片上的不透明部分作为毛发,道理与绘制一些靠得较近的点形成一条直线类似。源代码下载:,
Deferred Rendering(延迟着色)
。源代码下载:。
感谢网友roujiao将这个HLSL教程编译成了电子书,下载。
至此shader的基本实现方法已经告一段落了,想进一步学习,强烈推荐Nvidia网站,把上的shader都弄懂了,你就是高手了。
ShaderX:Direct3D ShaderX Vertex and PixelShader Tips and Tricks
学习Shader编程的经典图书系列,2002年出版,不过好像太老了,里面的代码都是用汇编实现的。,英文版,pdf格式,10.5MB。
ShaderX2:Introductions&Tutorials with DirectX9
学习Shader编程的经典图书系列,2004年出版。(英文版,pdf格式,6.8MB),(38MB)。主要内容有:
DirectX HLSL语言介绍
vs_3_0和ps_3_0 Shader Models介绍
使用Direct3D9的高级光照和着色
不同的雾化效果
Stencil ShadowVolumes理论
使用RenderMonkey开发Shader
创建对Shader友好的模型技巧
ShaderX2:Shader Programming Tips&Tricks with DirectX9
学习Shader编程的经典图书系列,2004年出版。(英文版,pdf格式,15.3MB),(187MB)。主要内容有:
第一部分—几何体创建技巧Geometry Manipulation Tricks
第二部分—渲染技术Rendering Techniques
第三部分—Software Shaders和ShaderProgramming技巧
第四部分—图像处理Image Space
第五部分—阴影Shadows
第六部分—3D引擎和工具设计3D Engineand Tools Design
ShaderX3: Advanced Rendering with DirectX and OpenGL
学习Shader编程的经典图书系列,2004年出版。(英文版,pdf格式,30.6MB)。
ShaderX系列目前已出到ShaderX8,名称已变为GPU Pro,上述电子书和源码的来源地址为
GPU Gems 2: Programming Techniques for High-Performance Graphics and
General-Purpose Computation
学习Shader编程的经典图书系列,2005年出版。(英文版,chm格式,14.4MB)。
GPU Gems 3
学习Shader编程的经典图书系列,2007年出版。(英文版,chm格式,26.2MB)。
GPU编程与CG语言
作者:半山工作室的康玉之,发表于2009年9月,(简体中文版,3MB)。应该去看看这篇文章的前言,真知灼见,现在中国搞基础研究的太少,比起外国,在图形学方面我们落后太多了。
实时计算机图形学(第3版)
(英文版,pdf格式,17MB)。
水面渲染教程
所见过的最详细的水面渲染教程,来源网站,
非常痛苦的一次翻译过程,数学太难,翻的时候手边备了两本书,一本《GPU精粹1》,一本《新概念物理教程光学》,有些大学里也没学过(也许学过全忘了),其中纳维-斯托克斯方程至今仍未被世人解出,甚至有没有解也不知道。不过看不懂不要紧,在后面的编程过程中遇到不懂的算法回过头来看看会有更好的理解。
本章主要介绍如何使用shader,这是基本功,我就不翻译了,详见pdf英文原文。
XNA 3.0 Game Programming Recipes
,pdf格式,3.8MB。简体中文版电子书下载,更新时间:,1.8MB。word文件下载,5.3MB,更新时间:。
我认为这是最好的一本XNA教程(初学者直接看《Professional XNA Game Programming: For Xbox 360 and Windows》会很累的),思路也是我推崇的“提出问题→解决方案→工作原理→具体实现”,反观现在的物理教学,会做很难的物理题目的学生竟然不会用物理知识解决生活中的基本问题,就是因为不会学以致用,当然类似于物理先一个一个章节学习(或者说一个一个模块学习)然后再是综合题(制作一个游戏项目),这本书应该是模块学习,而要做一个游戏必须先学好一个个模块,但每个模块都学好不见得会做游戏,所以最后推荐如果条件成熟,自己做个游戏吧,在制作的过程中你会学到很多东西。此书的作者是Riemer
Grootjans,如果你到网上搜一下,会发现很多网址或多或少都引用了他的文章。Riemer在比利时布鲁塞尔的Vrije大学获得了电子工程学的学位,几年前,他一直维护着一个网站(网址是,感谢网友WyNfee的提示,这个网站如果不能访问请用代理服务器)介绍DirectX编程,当XNA在2006年12月发布后,他又将教程都移植到了XNA平台上,2007年7月,他获得了微软的XNA
MVP称号。另外要研究Shader那么有一个人你必须知道:Wolfgang Engel。
因为StunEngine引擎的0.3版本中需要实现高级地形、水面,而代码主要参考了网站上的3D系列教程4,所以事先进行了翻译。3D系列共有4个教程,分别是,,,。
游戏引擎StunEngine
2009年翻译完成了《XNA 3.0 Game Programming Recipes》,下面的工作就是将所学的知识整合起来,也就是制作一个游戏引擎,第一步是——给引擎起一个好听的名字,因为儿子叫范思腾(外公起的,来自于荷兰三剑客之范巴斯滕,虽然我喜欢的不是足球而是篮球,但叫范乔丹实在不像样),所以取个谐音就叫StunEngine吧,Stun的英文原意是“使震惊(或惊愕、目瞪口呆)”,还不错。
StunEngine0.1版
第一阶段完成了2D用户界面,并用这个简陋的引擎将《Professional XNA Game Programming》中第一个游戏XNA Pong重做了一遍。源代码(日),注意此引擎用的是XGS3.1,其中使用的字体是“微软雅黑”,如果你的机器没有安装这个字体会出错,请将源代码中的两个SpriteFont文件中的字体改为安全的“宋体”即可解决,教程会陆续放出。
StunEngine0.2版
Sample02演示了基本地形、天空盒、fps相机、free相机和相机跟随地形的移动。
Sample03演示了基本地形,天空球,层次动画模型以及模型跟随地形旋转的效果。
StunEngine0.3版
UI控件中的多选框,单选框,列表框,下拉框,滑动条,滚动条。
实现了材质类Material,Mesh类,自定义effect类。
基本几何体矩形,立方体,球。
高级地形,水面,海面。
billboard类。
(日更新)
Sample04主要演示了水面的反射和折射的实现。
StunEngine0.4版
阴影映射,已完成,但效果不理想,单元测试位于TestGame项目中的TestShadow方法中。
法线映射,单元测试位于TestGame项目中的TestNormalMapping方法中,球体的切线算法有点小破绽,不过肉眼看不出来。
蒙皮动画模型,完成度80%,还未实现动画混合,单元测试位于TestGame项目中的TestSkinningModel方法中。
Instance,完成度50%,类和effect已编写,还未在单元测试中实现,而且XNA4.0会添加一个DrawInstancedPrimitives方法可以更容易地实现Instance,所以会等XNA
4.0发布后才会加以改进。
2D粒子系统,已完成。因为DirectX10之后已经取消了对PointSprite的支持,所以XNA4.0也取消了。而官网的3D粒子系统是基于PointSprite的,所以等官网发布新示例才会实现3D粒子系统,虽然也可以通过BillBoard实现,这在《XNA
Recipes 3.0》有相关例子,但还是想知道是否有更好的做法。
后期处理,完成度90%,主要是因为其中使用了ResolveTexture2D对象,而XNA4.0已经取消了对它的支持,待XNA4.0发布后会进行修改。推荐去下载Shazzam
- Shader Effect Editor,虽然它是用WPF实现的,但是其中的后期处理代码只要稍加修改就可以添加到本引擎中,目前引擎实现了6种效果,Shazzam实现了38种。
(32MB,日更新)注意:必须先生成TestGame项目创建引擎的dll文件,而后才能使用Samples项目打开示例,否则会提示找不到对引擎的引用。
Sample05主要演示了后期处理和将XNA程序嵌入WinForm。
StunEngine0.5版
源代码下载(51MB,日更新)
取消了材质系统,用Effect封装类替代。
实现了2D和3D粒子系统
实现了画绘制3D线段的通用类
改进了公告牌系统
场景编辑器中实现了拾取
暂时取消了阴影实现
引擎类在Debug模式工作正常,但编译成Release时报错,这是因为HLSL编译器在编译包含光照运算的Effect(比如说地形)时无法成功,原因是在Release模式下编译细节过程会有所不同,但找不到解决方法,事实上连官网上的ShipGame示例也会出现这种问题,Debug成功,Release失败。
Sample05后期处理还有些小问题,日后修复。
场景编辑器教程
XNA物理引擎的实现研究
终于可以干回老本行了,下一阶段的主要任务是想自己编写物理引擎,所以StunEngine中的阴影、动画模型就先放一放吧,做个物理课件好像用不着这些东西。
自己胃口挺大,想同时实现3D、2D和Flash上的物理引擎,倒不是自不量力,主要是因为实现原理都是相通的,初步研究下来可以齐头并进。3D引擎主要参考,目前最新版本为JigLibX
0.3.1 Beta,发布于2009年4月,不过最近已经支持XNA 4.0了,好像作者自己又编写了一个新引擎 ,据说比JigLibX快了100%,截止到日版本为0.1.5,;2D引擎参考了,截止到日,最新版本为3.2,从代码中可以看出,它主要参考了;flash物理引擎主要参考,照道理应该参考才是,但ape足够简单,打好基础吧。
Game Physics Engine Development
物理引擎开发,C++代码,2007年出版。,英文版,pdf格式,6.9MB。
游戏开发物理学
2004年出版。,中文版,pdf格式,22.4MB。
Physically-Based.Rendering
2003年出版。,英文版,pdf格式,7.3MB。
实时碰撞检测算法技术
2010年清华大学出版社。即《Real-Time Collision Detection》的中译本,我买了实体书,就我目前的水平来看,碰撞检测看这本书就够了。
Beginning XNA 3.0 Game Programming From Novice to Professional节选
,pdf格式,8MB。。
第12章键盘控制请见Content目录下Settings目录中的GameSettings.xml文件,你也可以自己改动
XNA动画实现
,(,50MB)
CHARACTER ANIMATION WITH DIRECT3D
动画模型的相关知识,C++代码,2009年出版。,英文版,pdf格式,14.6MB。
其他电子书
Microsoft XNA Game Studio Creator’s Guide(第2版)
,pdf格式,4.3MB。写的东西挺实用的,但我不喜欢作者的编程风格。。
(XNA3.0版本)
如你有兴趣,还可以研究MD3的导入器,MD5的导入器
XNA Unleashed 3.0
,pdf格式,4.8MB。书写得不错,但代码缺少素材,也就没兴趣研究了。源代码下载地址,。注意:出于商业和带宽考虑,源码中不包含模型、纹理等素材,这些都在随书光盘中。
Learning XNA 4.0
,pdf格式,6.4MB,由裴小星翻译,对应网址为。对初学者这本书还是很好的,说得也很详尽。。
Building XNA 2. 0 Games A Practical Guide for Independent Game Development
,pdf格式,14.1MB,本书的作者James Silva制作的《洗碗工:死亡武士》曾在2007年微软XNA游戏大赛上获过奖。本书只涉及2D编程,如果你想编写一个类似于马里奥的平台游戏,这本书是很有帮助的,书中还实现了一个地图编辑器和2D角色编辑器。(237MB,代码只支持XBox360手柄控制,键盘控制代码需要自己添加)
3D Graphics with XNA Game Studio 4.0
电子书下载(pdf格式,英文版,6.6MB),感谢网友WyNfee提供。
第一章包含5个示例:主要实现了自定了模型类和三种模式的相机:自由模式、轨迹球模式和跟踪模式。
第二章只有1个示例:创建了材质Material类,并实现了简单的逐像素镜面高光光照。
第三章有4个示例:首先分别实现了单独的点光源和聚光灯光源,然后实现3个单向光源,最后使用Deferred shadering技术实现了8个点光源。
第四章有3个示例:首先介绍投影纹理,以此为基础实现了阴影映射,最后一个示例对阴影进行模糊获得更好的效果。
第五章有5个示例:雾化,法线映射,天空球,立方贴图反射,水面反射。
第六章有3个示例:首先实现了BillBoard,并使用这个技术创建了树和云,然后在此基础上使用两张互相垂直的纹理表现树,使之效果更好,最后是粒子系统。
第七章包含4个示例:单纹理地形,多纹理地形,再施加一张噪点贴图增加细节,最后综合前面的几个示例展示了云、树、草、水面和地形。
第八章包含5个示例:介绍后期处理。
第九章包含7个示例:介绍模型动画:简单动画、关键帧动画、通过插值运算让移动更平滑、阶层模型动画、沿固定轨道的动画、蒙皮动画模型。因为网上下载的压缩包数据出错,最后一个示例无法修复运行,从字面的意思大概演示的是在蒙皮动画模型上附加其他模型,比如说在人的手上握一根棒,类似例子在XNA官网上也有下载。
Autodesk Softimage Mod Tool 7.5
Softimage Mod Tool是建模软件Softimage的非商用免费版本,目前最新版本为7.5版,可以导出包括CryEngine、Unreal3、Source以及微软XNA的文件格式,下载地址为,约456MB,在主菜单有专门针对XNA的选项,自己试用了一下,感觉还是挺方便的。自己整理了点教程,来自于它的帮助文件。
在网上也搜到了几个地址,想深入研究的话可以去看一下
网站上的视频教程
Xna3.0帮助文件翻译
以下文章的翻译我是站在巨人的肩膀上的,由组织翻译的而来,我只是添加了一点XNA3.0新的东西。
关于微软帮助文件的一个笑话:一位驾驶员正开一架单引擎的小飞机,载着几位高层管理人员飞往西雅图机场, 可是空中布满浓雾,能见度不到10英尺,而且机上的仪表也坏了。他只好盘旋寻找地标。差不多过了一个小时,燃油眼看就要耗尽,机上乘客紧张万分。透过浓雾的间隙,驾驶员终于看到一座高楼,在那儿的五楼还有一个人在孤零零的埋头工作。
驾驶员飞近大楼,放下窗玻璃,冲着那人高喊:“喂!我在什么地方啊?”孤单的职员回答道:“你在飞机里。”飞行员升起窗玻璃,做了个275度转弯,紧跟着一个 漂亮的盲着陆动作,停在了五英里外的机场跑道上。也就在这一刻,飞机引擎烧尽最后一滴燃油停止了转动。
机上的乘客觉得驾驶员神了。有一个问他怎么知道的。“很简单,”驾驶员回答 道。“他给我的回答百分之百正确,但丝毫用处也没有。因此那里一定是微软的技术支持部。从那里到机场距离5英里,方位87度。还有问题吗?”
有意思!的确,在翻译xna3.0帮助文件的过程中也有这个感觉,要想真正弄懂还是要看源代码的注释,不过是英文的了。
Xna官方网站示例翻译
此示例展示如何管理精灵块,精灵动画,是否可见和虚拟化二维相机的数据。
这个示例实现了以下功能:可以支持不同材质的多个模型,可以支持多个点光源,可以支持每个材质的环境光、漫反射光、镜面高光和纹理属性,可以支持每个光源的颜色、强度和衰减,支持Phong反射。
本示例展示了如何使用XNA框架的内容管道处理和绘制一个蒙皮动画模型。
这个示例展示了如何从一个单向光源实现一个基本的阴影映射,而阴影贴图的视场和投影可以匹配相机的视锥体。
这个示例展示如何有效率地绘制相同模型的许多副本,使用GPU instancing技术减少重复绘制调用的开销。
本示例介绍了粒子系统的原理,展示了如何SpriteBatch使用粒子效果,包含两个粒子效果:爆炸和烟雾。
本示例展示了如何使用XNA框架的GraphicsDevice在WinForms程序中显示3D图形。
本示例展示了如何通过动态运行Content Pipeline导入器和处理器在运行时导入任意模型,你无需事先生成内容。
本示例展示了如何判断玩家的光标是否在一个物体上,如何找到物体的屏幕坐标。
本示例展示了XNA框架内置的effect(BasicEffect,SkinnedEffect,EnvironmentMapEffect,DualTextureEffect和AlphaTestEffect)和SpriteBatch(SpriteEffect)使用的默认shader的源代码。
3D虚拟物理实验室
学习XNA编程的主要目的是想自己做一个物理引擎,或者说一个虚拟物理实验室帮助物理教学。这一点上金华科公司的仿真物理实验室做的相当好,我的基本构想是以这个软件为借鉴做成3D版的,事实上我也知道很多情况下3D的反而影响观察效果,权当练练手吧。
首先要解决的问题就是如何实现用户界面。因为XNA主要服务于游戏设计,而在游戏中通常都是自己实现用户界面的,想要通过winform使用标准的控件不是那么容易,参考了并翻译了一下,
基本框架搭完后,下面就要开始艰苦卓绝的物理引擎编写过程了,在网上找到了这篇系列文章,原文地址,自己翻译一下作为知识储备。
翻译完此篇文章有点失望,本来以为会教你如何实现一个物理系统呢,原来只是引用现成的JigLibX物理引擎,但看了JigLibX的源代码才发现它实在是太复杂了,自己没几个月时间可能是无法理解的,现在想清楚了,知道如何使用就好,不要自己从头发明轮子,有兴趣的可以研究一下。
在这篇文章中的留言中也有网友提问:为什么xna已经提供了一个很好的串行化工具(可见xna3.0帮助文件中的),你还要自己实现它呢?作者Sean回答:因为这是一个教程,自己实现它能更好地了解工作原理,这个道理与XNA
Game Engine教程系列1-Component和GameScreen中自己实现component类是一样的,其实xna已经提供了GameComponent,DrawableGameComponent,GameComponentCollection类,诸如鼠标类,相机类,水面类,地形类都可以从这些类继承,在《Professional.XNA.Game.Programming》一书的第四章俄罗斯方块游戏中就使用了xna的组件类。日,作者发布了更新了的组件类代码,为串行化和编辑器做好了准备。
作者至少也得放一张编辑器的界面截图吧,不然我翻得云里雾里,看得也云里雾里。
建议先阅读XNA帮助文件,已翻译好,可,如果你看过《XNA
Game Studio Express Beta2帮助文件》,会发现老版本的XNA实现方法不一样,但里面的计算公式对理解原理还是很有帮助的,在新版本中,我猜大概微软将这个过程封装成了Viewport.Unproject()方法,代码简化了很多,齐.net博客上的这篇文章也不错。然后看文中的代码,使用的是包围盒拾取,接着是Xna官方网站上的两个示例,一个使用包围盒拾取,另一个使用多边形拾取。最后看这篇文章提供的两个示例,一个是颜色拾取,另一个是多边形拾取。个人认为,普通应用包围盒拾取就够了。如果想真正弄懂原理,由翁云兵翻译的中的第十五章可供参考,用的是C++代码。
其实《3D数学基础:图形与游戏开发》一书中P130至P173页说得更清楚,(扫描质量不高,建议去买一本放在案头,数学基础很重要),此书还详细分析三种方式的优缺点。
对从winform编程一路走来的程序员(比如我)来说这篇文章前半部分写得有点啰嗦。而后半部分他是使用Xna Creators Club网站上的winform series1中的方法实现的,根据我前面翻译的文章,这种方式还不是很完美,因为作者没有放出源码,不知具体效果如何。
3D空间中电场线的实现
2009初研究了一个月,想通过XNA实现3维空间中的电场线,这在教学中还是很有用的,书本和黑板上只能演示2维平面中的电场线,通过语言很难在学生脑海中形成一个正确的物理图景。
首先还是网上搜索,看看被人是如何实现的,从下载了“二维点电荷形成的静电场电场线绘制”,是河海大学电气工程学院一位大学生的毕业论文,编程语言为VB,主要的算法就是借鉴他的。
从下载了Electric
Field(),不仅能绘制电场线,还能绘制等势面,可惜没有源代码。
从找到了Equipotential
Surfaces 3.1,能绘制3维空间中的电场线和等势面,可惜无法下载。
最后,推荐网站,使用java实现了电场和磁场的3维模拟,还提供源码,有时间好好研究一下。
我的成果截图如下,但算法上有点小问题,电荷在某些特殊位置程序会死循环,但此软件的亮点是能用鼠标拖动电荷,电场线也能动态地发生变化。
Blocker游戏
2008年12月翻译完《Professional.XNA.Game.Programming》之后,接下来的行动就是使用这本书介绍的游戏引擎制作一个自己的游戏,“纸上得来终觉浅,绝知此事要躬行。”,只有通过自己动手制作才会真正吃透书中的知识。这个游戏来自于《3D游戏编程入门经典》,清华大学出版社2006年翻译,Tom
Miller著,他也是Managed DirectX API的设计师和首席开发人员,MDX取消后,他成为了XNA框架的架构师,书上的程序是用MDX编写的,我所做的只是借助于XNA游戏引擎把它移植到XNA平台上。以后会总结一下游戏设计思路。
实在是定不下心来写教程,放个源代码吧,引擎主要参考了《Professional.XNA.Game.Programming》中的Xna
Shooter游戏,游戏失败时方块的飞散效果还没有实现,欢迎大家改进。
2006 - 2017 上海市第八中学,推荐分辨率以上,推荐浏览器IE9.0及以上}

我要回帖

更多关于 cocos2dx 物理引擎 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信