2022年FarseerPhysics.开源D物理模拟引擎 .pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《2022年FarseerPhysics.开源D物理模拟引擎 .pdf》由会员分享,可在线阅读,更多相关《2022年FarseerPhysics.开源D物理模拟引擎 .pdf(26页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、翻译 XNA 开发之 Farseer Physics 2.1 开源 2D 物理模拟引擎onehttp:/ Farseer物理引擎是一种易于使用的2D 物理引擎。它支持广泛的平台,如微软的XNA , Silverlight 的,粮食计划署,和香草。网。Farseer物理引擎的重点简单,实用的功能,使创造的乐趣,充满活力的游戏。概览使用权的难解问题,Farseer 物理引擎的目的是随着时间的推移控制的地位和轮换游戏实体。在现实世界中,移动和旋转的东西,由于适用于外加力和扭矩。在Farseer ,情况也是如此。对象称为“ 机构 ” 代表了现实世界的东西。作为外加力和扭矩被使用,该机构的反应依法二维物
2、理。这些机构的位置和旋转,随后用来更新游戏实体。在非常简单的概述它的运作方式如:1.创建 “ 身体 ” 对象2.添加 身体 对象到模拟器3.开始游戏的循环1.适用于施加力和扭矩,以身体。2.更新模拟器4.结束游戏循环机构设计,没有几何中的二维世界,因此没有任何碰撞的概念碰撞,Farseer的“ 几何 ” 的对象。几何物体的代表作为二维多边形可以是凹或凸。他们是由一组顶点。 一个或多个几何连接到一个机构,以便使该机构得到几何意识。这使得机构参加碰撞与其他机构(实际上其他几何重视其他机构,但你得到的图片。)Bodybody 的核心是物理对象Farseer 。施加力,扭矩和推动力,适用于机构和机构作
3、出反应,因此移动。机构自身不包含任何形式的碰撞意识。如果要建立一个机构,通常使用BodyFactory ,但首先,这里是你如何手动建立一个机构:Code正如你所见的,计算MOI( 转动惯量 )为以下的矩形:不是每一个记忆MOI形状,Farseer 物理为你计算的MOI 。所有您需要做的就是使用BodyFactory 类中所描述的 “ Body Factory”一章。需要注意的是有关机构的立场是相对的中心机构名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 26 页 - -
4、- - - - - - - 前副图片是正常位置,而后面一副图片是中心位置这关系到您的定位和绘图代码。当你的位置你的Body,你需要它的相对中心的Body 位置。此外,当你想在屏幕上画Body,请务必z 注意相对中心。Body Factory您创建了一个Body 工厂这样的 : Body rectBody = BodyFactory.Instance.CreateRectangleBody(PhysicsSimulator, 128 , 128 , 1); 这个BODY有一个大小为 128宽度,高度 128的质量 1。MOI( 转动惯量 )帮助你计算。注意PhysicsSimulator 做为参
5、数立刻被添加到Body 中。您可以创建所有这些类型的Body 工厂 : 矩形,圆形,多边形,Body, 最后一个项目(Body)是当您想建立一个Body,没有 Farseer计算 MOI 帮助你。您也可以使用它来创建克隆Bodies. 还有一些超载的每个BodyFactory 方法。 一个需要PhysicsSimulator 对象和另外一个不需要。如果您提供了PhysicsSimulator 对象,您创建的机构将被添加到模拟器中。Geometry几何形状( Farseer 中的几何)是碰撞检测的中心。几何需要一个Body 和一套顶点(规定为逆时针),界定形状的边缘。虽然该 Body 是可以被力
6、量,扭矩,和推动力所控制,几何在控制碰撞检测和计算推动力与其他几何图形碰撞。您通常使用GeomFactory 来创建一个几何,但首先,这里是你如何手动创建一个几何:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 26 页 - - - - - - - - - Code 这将创建一个矩形体,这是一套顶点,它们代表了一个矩形外形(相对于0 , 0 )和一个新的几何形状的定义顶点。11作为参数插入几何构造的网格单元尺寸。我们将有一个深入的观察网格单元尺寸的Grid 章GeomFa
7、ctory另一种更容易的方式,并建立一个几何是使用GeomFactory 。该 GeomFactory 可以创建一个简单的顶点集合形状如矩形和圆形。所有你需要的是宽度,高度为矩形或半径为界。这里是一个利用GeomFactory 创建几何的例子1 Body rectBody = BodyFactory.Instance.CreateRectangleBody(128, 64, 1); 2 Geom rectGeom = GeomFactory.Instance.CreateRectangleGeom(PhysicsSimulator, rectBody, 128 , 64); 请注意, 您不必提
8、供任何顶点或网格单元尺寸。该 GeomFactory 为您创造了顶点,计算网格单元尺寸在某种情况下您想控制的网格单元尺寸。这也对 GeomFactory 很容易,只需使用重载方法,考虑一个网格单元尺寸:1 Geom rectGeom = GeomFactory.Instance.CreateRectangleGeom(PhysicsSimulator, rectBody, 128 , 64, 6.4f); 现在我们有一个网格单元尺寸为6.4 。 (之后的F 数显示在C#中,它是一个浮点型)如果您设置 0到网格单元的尺寸,它会为你计算。他们这样的计算是通过寻找几何最短的一侧(64在这种情况下)和
9、乘以它的默认网格单元尺寸的因式0.1 。这将 yeld 6.4 。您可以调整预设的网格单元的尺寸设定GridCellSizeAABBFactor的 GeomFactory 对象。Physics Simulator View物理仿真系统认为是用于联合调试,Body 的位置,几何调整和碰撞。当您同意这看法,您会看到锚,碰撞,联络点,中心,小麦的,还有许多其他的信息可能是必不可少Farseer物理相关的问题调试。物理仿真系统仅用于XNA 。在未来调试将用于其他平台。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - -
10、- - - - - 第 3 页,共 26 页 - - - - - - - - - 解释述说明:有许多配置的调试见解。以下列出的可能发生的:性能面板显示关于时间引擎的信息和目前的机构数量,尺寸,接头,弹簧,控制器和判优器。整理:在过去更新所花费的时间来添加和删除几何,机构,接头,控制器和弹簧。广泛相碰撞:所花费的时间做了广泛的碰撞检测阶段。狭义相碰撞:所花费的时间做的狭隘相碰撞检测。适用于施加力:所花费的时间适用于施加力所有弹力,控制器和机构。适用于推动力:所花费的时间适用推动力到接头和判优器。最新位置:所花费的时间来更新的所有bodies 位置顶点显示了顶点拼接成几何形状。他们被视为黑色小像素
11、周围的几何学AABB 显示了排列装订盒子的轴(更多关于AABB 的在 AABB 章)。联系显示了有联系的顶点。显示为红色的小像素。坐标轴显示机构的中心。表现出一个黑色交叉网格显示网格的几何距离缩小阶段用于碰撞检测。就不可能有很多的网格点,所以这个选项可能会拖慢。显示为黑色圆圈。(未启用调试查看图片段)边缘显示几何形状的轮廓边缘。显示为黑色的边缘。Joints 旋转,销和滑块关节有可视化弹簧线性弹簧(包括固定和正常)显示黑线之间的两端点。3圈的位置显示收缩和扩张的路线。JointsFarseer物理引擎为您提供一些基本的Joints。您可以用这些节点创建几乎任何相结合动态行为:名师资料总结 -
12、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 26 页 - - - - - - - - - 旋转联合 * 角联合 * 角度限制联合* 引脚联合滑块联合*有一个 “ 固定 ” 版本。固定版本意味着联合为基础的世界,而不是另一个机构作为非固定的版本。所有 joints 的重要提示有些关节需要锚相对机构的位置和一些需要世界定位点。因此,要注意类型的联合的使用。关节附属于机构。所有关节共享一些变量和方法。锚不必重视内部机构几何。当关节打破,他们将被禁用。如果 Joints 不能按预期方式工作1.
13、请检查您的anchors 是正确的。使用PhysicsSimulatorView找到它们(现在这意味着XNA ) 。2.不改变性能急剧下降。调整缓慢,重新检查您的模拟器。3.不必重视锚的内部机构几何。不要让您的几何限制你克服困难能力。请记住游戏是 50%假的。做什么才能使最终结果是看的权利。开发者注意:所有的关节都来源于基类联合,如果你有认识, 以添加您自己的约束一定要获得你的更好的联合(请与团队共享)。共享变量 - (这些适用于所有的关节)启用 -只要让引擎知道是否执行限制IsDisposed -让您和 PhysicsSimulator 知道联合是否已处置JointError - 获取错误的
14、联合。请注意,并非所有关节产生错误断点 -定义最大允许值,JointError 可以达到前联合被打破了。默认是牢不可破(最高浮点数)。柔软度 -这系数用来允许柔软联合。应该在0.0f 和1.0f 之间,一切未定义。这是真的只是用来调整您想要的模拟器。一些需要注意的是所有关节会有一些柔软度即使柔软设置为0.0f 。BiasFactor -这个系数确定如何顽固的错误将得到纠正。应该在0.0f 和1.0f 之间,一切未定义。默认为 0.2f 。请注意,设置过高或低会造成很大的不稳定,所以用小递增来改变。突破 -这事件处理联合破裂时释放资源。这里为你提供一个方法,否则,什么都不会发生。标记 -一种通用
15、的对象,按您喜好设定任何事情共同的方法- (这些适用于所有的关节)验证 -确定是否所有机构参与不处置。如果有联合不处置。PreStep -运用数学需要更新的联合。只应该用于您编写自己的联合。Update -运用数学需要更新的联合。只应该用于您编写自己的联合。处置 -处置联合Revolute Joint名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 26 页 - - - - - - - - - 这种类型的联合主要添加耦合或多个对象连接在一起。这个联合接受世界向量除存储连接的
16、位置作为两个本地在内向量。联合错误决心找到两名当地载体之间的距离。这个联合机构是在机构和机构适合的类型。一些值得注意的是,当使用的机构机构类型,机构仍然可以线性的移动,并在使用固定式机构,该机构只能旋转。属性 :Body1 -获取 /设置的第一个机构的联合。这个属性被命名机构固定旋转接头。Body2 -获取 /设置第二个机构的联合。这个属性不存在固定的旋转接头。锚-获取 /设置锚联合。这是在世界坐标。CurrentAnchor -获取世界的坐标联合后的仿真已经开始。有益的借鉴联合。SetInitialAnchor -在设置锚之前已经开始的模拟演示说明:黄色的长方形寄托在一个旋转的联合。它可以不
17、动,只转动。使用鼠标来旋转矩形。固定旋转联合是用来实现这一目标。旁边的矩形,您将看到一个绿色钉死的长方形,一个红色的长方形。他们可以在世界坐标里移动,但他们无法移动相对对方,只有旋转。正常转动的联合是用来实现这一目标Angle Joint这个接缝主要是为连接两个Body 的同样的角度或者得到目标夹角。简单固定版本用一个目标夹角保持。他们的主要作用是程序改变Body 的角度时不会造成角度猛烈的改变。如果你改变了角,团体或机构将迅速作出反应,以实现这个角度。属性TargetAngle - 获取 /设置的该机构/机构将努力实现弧度角。MaxImpulse -获取 /设置身体 /机构将的最大扭矩以利用
18、在试图实现TargetAngle 。默认为高浮点数Body1 - 获取 /设置的第一个机构的联合。这个属性被命名身体关节固定角。Body2 - 获取 /设置第二个机构的联合。此属性并不存在于关节固定角。事例说明 :左边你看到一个绿色的长方形一直保持在特定的角度。它不能转动,只有移动。固定角度被用来实现这一目标。右边看到 2黄色矩形共享同一角/旋转。如果您旋转其中之一,另外一个将旋转同样的位移。正常的角度被用来实现这一目标Angle Limit Joint同样作为一个角度的联合,但限制,没有目标的夹角,没有扭矩推动力。属性LowerLimit - 获取 /设置最低的角度,弧度,Body Uppe
19、rLimit- 获取 /设置最大的角度,弧度,Body。Slop-获取 /设置在过去的最小/最大限额之间的允许溢出。Body1 - 获取 /设置的第一个Body 的联合。这个属性被命名体Body 极限固定角。Body2 - 获取 /设置第二个Body 的联合。此属性并不存在于Body 固定极限角。演示说明:绿色矩形的左边一直在定义的区域保持不断旋转。最低15度,最高 50度。一个固定的角度限制的joint 是用来实现这一目标。这两个黄色矩形正处在一个总是相对彼此在一个特定的角度限制。尝试把他们两个放到名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - -
20、- - - - - 名师精心整理 - - - - - - - 第 6 页,共 26 页 - - - - - - - - - 在地面上,您将会看到,它不可能让双方稳定地站在地面上。最低 15度,最高 50度。正常角度限制的joint 是用来实现这一目标。Pin Joint这项联合或许应该被称为导管接头。这两个Body 保持一定的距离同时使他们能够旋转属性TargetDistance -获取 /设置两个锚点之间的理想距离。如果没有距离的规定,两机构之间偏移量将是目标的距离。Body1 -获取 /设置联合的第一个Body。 在不重新计算TargetDistance 的情况下改变它可能导致不稳定。Bo
21、dy2 -获取 /设置联合的第二个Body。 在不重新计算TargetDistance 的情况下改变它可能导致不稳定。Anchor1 -为 Body1获取 /设置本地的锚Anchor2 -为 Body2获取 /设置本地的锚WorldAnchor1 -为 Body1设置世界锚,对绘制连接非常有用。WorldAnchor2 -为 Body2设置世界锚,对绘制连接非常有用。演示说明 :两个红色矩形使用结合链共同保持对方与目标之间距离。他们不能移动的很远或者互相靠近。这两个机构还是可以旋转。这两个黄色矩形使用滑块联合(如下所示),以保持最低和最高之间的对方距离。与结合链联合他们可以进一步远离和彼此更加
22、接近相比。Slider Joint这项联合就像一个带有最小/最大的距离限制引脚的联合,这两个Bodies 将保持一系列的最低,最高的距离,同时使他们能够旋转。属性TargetDistance -获取 /设置两个锚点的理想之间的距离Body1 -获取 /设置联合的第一个Body。在不重新计算TargetDistance 的情况下改变它可能导致不稳定。Body2 -获取 /设置联合的第二个Body。在不重新计算TargetDistance 的情况下改变它可能导致不稳定Anchor1 -为 Body1获取 /设置本地的锚Anchor2 -为 Body2获取 /设置本地的锚WorldAnchor1 -
23、为 Body1设置世界锚,对绘制连接非常有用。WorldAnchor2 -为 Body2设置世界锚,对绘制连接非常有用。Min -获取 /设置锚点可连接在一起的最短距离的。Max -获取 /设置锚点之间分开的最大距离的。Slop-获取 /设置在过去最小/最大限额的允许溢出。Joint FactoriesJoint Factories 允许您使用很多相同的方式创建连接,您可以用fatory 创建一个body。因为所有的参数都被描述为各种连接,我将只列出了各种使用过的方法。请注意, 工厂并不总是设置所有联合所需要的参数。旋转Joint Factory1 CreateRevoluteJoint(Ph
24、ysicsSimulator physicsSimulator, Body body1, Body名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 26 页 - - - - - - - - - body2, Vector2 initialAnchorPosition) 2 CreateRevoluteJoint(Body body1, Body body2, Vector2 initialAnchorPosition) 3固定旋转Joint Factory1 CreateF
25、ixedRevoluteJoint(PhysicsSimulator physicsSimulator, Body body, Vector2 anchor) 2 CreateFixedRevoluteJoint(Body body, Vector2 anchor) 铰链结合Joint Factory1 CreatePinJoint(PhysicsSimulator physicsSimulator, Body body1, Vector2 anchor1, Body body2, Vector2 anchor2) 2 CreatePinJoint(Body body1, Vector2 an
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2022年FarseerPhysics.开源D物理模拟引擎 2022 FarseerPhysics 开源 物理 模拟 引擎
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内