`
hjk685
  • 浏览: 101807 次
  • 来自: ...
社区版块
存档分类
最新评论

JME3 官方教程翻译

阅读更多

 

What is updateGeometricState() and when do I need it?

UpdateGeometricState() 方法的用处,什么时候用?

In jme3 it is more important than in jme2 that the correct updating and rendering order is kept, this is why you should understand what updateGeometricState() is all about.

jme3 中有了很重要的跟新,渲染序列可控性也大大提高,所以到处都会用到 updateGeometricState() 这个方法,你必须对这个方法有深刻的理解。

What does updateGeometricState() do?

updateGeometricState () 用来做什么。

The call to updateGeometricState() applies all changes made to a Spatials location , rotation and scale and computes the correct world position including the Spatials parent position (if there is one) so all information is correct for the rendering process. When updateGeometricState() is called on a Node, all child Spatials will be updated as well, given that their flags indicate something has changed. In a normal update loop, updateGeometricState() is called once on the Scenes rootNode just before rendering.

updateGeometricState() 会在三维空间中应用所有的更改,包括:位置、旋转、缩放以及纠正所有父级别的三维空间坐标,所以此时所有的信息都会在渲染线程中纠正。当 updateGeometricState() 在一个节点上被调用时,所有的子空间将被更新,并且给他们的标志标记上已经改变的记录,通常的跟新循环中该方法只在场景的根节点开始渲染前调用一次。

Why would you want to use updateGeometricState() yourself then?

为什么你有时候想要来使用 updateGeometricState() 方法?

Since the world location of spatials is only known after updateGeometricState() has been called in jme2 it was common practice for some to call updateGeometricState() on the spatial to compute its correct location because it had been changed before. In jme3 you should not do that as updateGeometricState() should only be called once on the rootNode of the scene during the update loop. If you really have to updateGeometric(), do so on the rootNode. In some tests however, especially physics tests, you might see that updateGeometricState() is used on created PhysicsNodes. This is however before they are added to a rootNode that is part of a live scene. When a Spatial has a parent or was added to the root node, do not call updateGeometricState() on it.

由于在 jme2 中场景空间对象的世界坐标 只有在 updateGeometricState() 被调用后才能知道,在空间对象上调用 updateGeometricState() 来计算正确的世界坐标在空间中的位置是常用的做法,因为它之前已经被改变了。   jme3 中你可以不用那么做, updateGeometricState() 仅仅在每次循环中只在根节点上调用一次。如果你趋势有必要去调用 updateGeometric() ,那就在根节点上调用。然而在一些练习中,尤其是物理检测中你可能会看到 updateGeometric() 在被创建的物理节点上被使用,这是由于在它们成为活动场景的一部分之前需要计算它(物理节点)的位置。当一个三维空间对象有一个父节点或者已经被添加到了根节点,请不要调用 updateGeometric()

When to change a Spatials translation

当发生了空间对象的转换

So going along this logic, you should not change the Spatials translation after updateGeometricState() has been called anymore. So how or when do you change it? Before. :) The InputListeners for example are called before updateGeometricState() is called on the rootNode and the Spatials are in their correct, updated state from the last loop run. Now you can use setLocalTranslation etc. to modify your Spatials, also using translation info from the other Spatials. The controllers (updateLogicalState()) are the second chance to modify your Spatials, they are used by the animation and particle systems for example. If you absolutely need to read the world location of a spatial in your normal update() call, you should call updateGeometricState() once on the root Node of the scene and read the world locations after that.

依照这个逻辑,你不应该在调用了 updateGeometricState() 之后再去做一些空间对象的变换。那么什么时候或者怎么才能进行变换呢?首先一个输入监听器被一个实例在根节点调用 updateGeometricState() 之前被调用并且空间对象已经处于它们的正确位置,在循环的最后更新状态。现在你可以使用 setLocalTranslation ()或其他的方法来修改你的空间对象,同样可以从其他的空间对象使用变换信息。控制器()会马上对你的空间对象作出修改,它们被动画和粒子系统使用。如果你绝对需要在你的 update() 中得到一个空间对象的世界坐标,你可以在根节点上调用一次 updateGeometricState() 之后来读取世界坐标。

 

《这篇文章字不多,给我搞的云里雾里的,效果很不好,请高手指点一下。。。》

0
0
分享到:
评论

相关推荐

    JME3 中文教程(ZBP翻译第一版)

    《JME3 中文教程(ZBP翻译第一版)》是一个专门为Java Media Engine 3 (JMonkeyEngine 3,简称JME3)爱好者和开发者准备的教程资源。JME3是一个开源的3D游戏开发框架,它基于Java编程语言,为开发者提供了高效、便捷...

    JME3中文教程(ZBP第一版)

    本教程是针对JME3的中文翻译版本,旨在帮助中文用户更好地理解和掌握这个强大的工具。 JME3的主要特点包括: 1. **高性能图形渲染**:JME3支持现代图形API,如OpenGL,能够高效地处理复杂的3D模型和场景,提供流畅...

    JME中文教程.pdf

    ### JME中文教程知识点概述 #### 一、jMonkeyEngine3简介 - **定义与特点**:jMonkeyEngine3...本教程提供了对JME3基础概念和操作的入门指导,希望能够帮助读者快速上手,并在未来的游戏开发旅程中不断探索和进步。

    jme3 api(精华chm)

    com.jme3.animation com.jme3.app com.jme3.app.state com.jme3.asset com.jme3.asset.pack com.jme3.asset.plugins com.jme3.audio com.jme3.audio.joal ...jme3tools.preview

    JME3学习文档

    ### JME3游戏开发引擎中文学习指南 #### 引言 JME3,全称jMonkeyEngine3,是一款开源的3D游戏开发引擎,专为Java开发者设计,旨在简化3D游戏和应用程序的开发过程。本文档将详细介绍如何在Netbeans6.x环境下搭建...

    JME教程.rar

    本教程将深入探讨JME的基础知识及其在开发移动应用程序中的应用。 JME的目标是为资源有限的设备提供Java编程能力,如手机、智能手表、家用电器等。它简化了Java技术,使其适应于小型设备的内存和处理限制。JME由两...

    2015jme3指南

    《2015jme3指南》是一份关于Java Media Engine 3 (JME3)的详细教程,主要面向对游戏开发感兴趣的开发者。JME3是Java平台上的一个开源3D游戏开发框架,它提供了丰富的功能,使得开发者可以快速创建高性能的3D应用和...

    JME程序设计实例教程

    **JME程序设计实例教程详解** Java Micro Edition(JME),又称为Java 2 Micro Edition,是Java平台的一个子集,主要用于开发和部署在资源有限的设备上的应用程序,如移动电话、PDA、智能家电等嵌入式系统。本教程...

    JME初级教程(持续跟新)

    Java Media Engine (JME), 也称为jMonkeyEngine 3 (JME3), 是一个开源的游戏开发引擎,专为快速创建3D游戏而设计。...始终保持对JME3官方文档和社区论坛的关注,将有助于你保持最新技术和最佳实践的同步。

    jme3材质基础知识

    本文将详细讲解"jme3材质基础知识",主要围绕jMonkeyEngine3(简称jME3)这个强大的开源Java游戏开发引擎。 jMonkeyEngine3是一个基于现代图形技术如OpenGL的3D游戏引擎,它为开发者提供了丰富的工具和库,简化了...

    jme3游戏demo rise-of-mutants

    《jme3游戏开发:Rise of Mutants》 在IT行业中,游戏开发是一个充满创新和技术挑战的领域,而Java语言并非通常首选的游戏开发工具。然而,随着技术的进步,Java也逐渐进入了游戏开发的舞台,其中JMonkeyEngine...

    JME3 JAVADOC

    本文档是JME 的javadoc 文档 JME是一个高性能的3D图形API,采用LWJGL作为底层支持。它的后续版本将支持JOGL。JME和Java 3D具有类似的场景结构,开发者必须以树状方式组织自己的场景。JME有一套很好的优化机制,这...

    JME的文件格式及支持的文件格式

    **JMonkeyEngine 3 (JME3) 文件格式详解** JMonkeyEngine 3(简称JME3)是一款开源的游戏开发引擎,专为构建3D游戏和应用而设计。它支持多种文件格式,使得开发者能够方便地导入和管理游戏资源。以下是对JME3支持的...

    联想的JME2207P键盘驱动

    标题中的“联想的JME2207P键盘驱动”是指专门为联想品牌的一款键盘型号为JME2207P的设备设计的驱动程序。在计算机硬件系统中,驱动程序是连接操作系统与硬件设备的关键软件,它使得操作系统能够识别并控制特定硬件,...

    相关技术\游戏引擎,JME

    3. **脚本语言支持**:JME允许使用内置的Java语言或外部脚本语言(如JavaScript)编写游戏逻辑,增强了游戏的可定制性和灵活性。 4. **多媒体支持**:JME可以处理各种媒体格式,包括音频和视频,为游戏提供丰富的...

    jme8002b蓝牙键盘驱动

    jme8002b蓝牙键盘驱动

    JME Molecular Editor结构式在线编辑器

    JME Molecular Editor结构式在线编辑器

    java8看不到源码-JME3-JFX:用于JME的JFXGui桥接器,具有用于常见用例的有用实用程序

    JME3-JFX 用于 JME 的 JFX Gui 桥接器,具有用于常见用例的有用实用程序。 许可证是新的 BSD 许可证(与 JME3 相同) 二进制版本可在以下位置获得: ( ) ( ) 它也可以用作 maven 存储库(请参阅“设置我”按钮)。 ...

Global site tag (gtag.js) - Google Analytics