java3d的具体引见 (java3大特性)
本文目录导航:
java3d的具体引见
引 言Java3DAPI是用来开发三维图形和开发基于Web的3D运行程序(applet)的编程接口.用于开发三维图形软件的3DAPI(OpenGL、Direct3D)都是基于摄像机模型的思维,即经过调整摄像机的参数来管理场景中的显示对象,而Java3D则提出了一种新的基于视平台的视模型和输入设施模型的技术成功打算,即经过扭转视平台的位置、方向来阅读整个虚构场景.它不只提供了建造和操作三维几何物体的上层结构函数,而且应用这些结构函数还可以建造复杂水平各异的虚构场景,这些虚构场景大到宇宙天体,小到宏观粒子3D是JavaMediaAPIs中的一部分,可宽泛地运行于各种平台,而且用Java3DAPI开发的运行程序和基于Web的3D小运行程序(applet),还可以访问整个Java类,且可以与Internet很好地集成,即假设在阅读器中装置了Java3D的阅读插件,在网上也可阅读Java3D所创立的虚构场景3DAPI还吸取了已有图形APIs的好处,即Java3D的底层图形结构函数不只综合了底层APIs(Direcrt3D、OpenGL)最好的绘制思维,而且它的上层图形绘制还综合了基于场景图的思维,同时,它又引入了一些通用的图形环境所未思考的新概念(如3D平面声),这样将有助于提高用户在虚构场景的沉迷感.本文将着重引见Java3D针对VR运行所提出的基于视模型和输入设施模型的新思维,在此基础上又探讨了如何应用Java3D来开发VR运行程序及其成功方法,并设计成功了一个运行实例.1.适于VR运行开发的Java3DAPI妇孺皆知,开发VR运行程序是一件很繁琐的上班,其开发人员必定编写运行程序或许遇到的各种输入和显示设施的接口程序,或许依赖专为VR运行开发而设计的运行程序编程接口(API),且典型的VR运行必定跟踪用户的头部位置和方向,以生成与头部位置方向相分歧的虚构场景图.另外,还须要先跟踪身材的其它部位(手、臂或腿部),而后经过身材各部位在虚构场景中的虚构视点与场景中的对象启动交互,而运行程序也必定具有能够应用跟踪输入设施在视点内搁置物体,并表明其在生成的三维图象中的位置和方向的配置.同时,面向VR的运行程序开发接口(API)必定能支持3D图形生成、解决跟踪器的输入,并能将跟踪消息反应到图形绘制中3DAPI可智能将头部跟踪器的输入集成到图形生成中,并具有经过访问其它跟踪器消息来管理其它特色的配置,但它是经过一种新的视模型(viewmodel)技术来成功的.该视模型是将用户真实的物质环境与计算机生成的虚构环境相互独立,并建设它们之间的通讯桥梁.该API也明白定义了用来探测Java3D物体六自在度(6DOF)传感器的前往值,并将其运行于显示场景图中.总之,这种新的视模型和输入设施模型可以很繁难地将交互式的3D图形运行程序转化为VR运行程序3D视模型2.1 新的视模型概念(viewmodel)基于摄像机的视模型是模拟虚构环境中的摄像机,而不是虚构环境中人的“替身”,而且它是经过管理摄像机与视点的相关参数来管理所显示的场景,但这种方法,在用户物质环境确定某些视参数的系统中是不正当的,例如在头盔显示器(HMD)系统中,HMD的光学性能就间接确定了运行程序所显示的视域.由于不同的HMD有不同的光学个性,因此假设准许终端用户轻易扭转光学参数显然是不正当的.这里视参数的值将随终端用户物质环境的不同而不同,而影响视参数的关键起因有显示器大小、显示器的位置(戴在头上,还是放在桌子上)、三维空间中用户的头部位置、头盔显示器的实践显示视域、每英寸的显示象素等.由于Java3D的视模型间接提供了头部跟踪的配置,因此经常使用户发生了真实存在于虚构环境中的错觉3D不只提出了新的基于视平台的视模型概念,同时将其推行到包括显示设施和6DOF中心输入设施(如头部跟踪器等)的接口支持中,而且新的视模型承袭了Java的“writeonce,vieweverywhere”实质.这象征着由Java3D视模型开发的运行程序或applet可宽泛地运行于各种显示环境.这种显示环境可以是规范的计算机显示屏、多元显示空间,也可以是头盔显示器3D视模型是经过将虚构环境和物质环境齐全独立的模式来成功上述配置的,且该视模型可将虚构环境中视平台的位置、方向和大小,与Java3D绘制的与视平台位置、方向相分歧的虚构场景相辨别.普通运行程序管理视平台的位置和方向,而绘制着色系统则依据终端用户的物质环境以及用户在物质环境中的位置和方向来确定显示场景.2.2 视模型的组成Java3D视模型由虚构环境和物质环境两部分组成,其中,虚构环境由ViewPlatform对象来示意,它是虚构对象存在的空间;而物质环境则由View对象以及和它相关的对象来示意.这里,View对象和它的相关对象就形容了用户所处的显示和操纵输入设施环境.只管视模型将虚构环境和物质环境相互独立,但可经过逐一对应相关来建设两种环球之间相互通讯的桥梁,这样将使得终端用户的行为会影响虚构环境中的对象,同时虚构环境中的对象行为也会影响终端用户的视点3D可经过几个对象来定义视模型参数.这些对象包括View对象及其相关对象、PhysicalBody对象、Canvas3D对象、PhysicalEnvironment对象、Screen3D对象.视模型相关的对象(如图1所示)其作用如下:ViewPlatform用来标记场景图中视点位置的节点.其父节点则指明了视平台在虚构环境中的位置、方向和大小用于指定须要解决场景图的消息3D定义了Java3D绘制图象的窗口,它提供了Canvas3D在Screen3D对象中的大小、形态和位置消息3D用于形容显示屏幕的物理属性用于封装那些与物质体相关的参视模型的组成及其相互相关数(如左、右眼的位置等)用于封装那些与物质体环境相关的参数(如,用于头状物体或头盔式跟踪器的校验消息).2.3 虚构环境中的视平台(ViewPlatform)鉴于视平台定义了一坐标系统,于是虚构环境中的原始点和参考点就有了一参考坐标系.这里视平台代表与视对象相关的一个点,并充任确定绘制图象的基础.图2显示了包括视平台节点场景图的一部分.由图2可见,视平台的父节点确定了视平台在虚构环境中的位置和方向.若经过修正与TransformGroup节点相关的Transform3D对象,就可以在虚构场景中轻易移动视平台.只管虚构环境中可以有许多不同的视平台,但特定的视对象只能与一个视平台相关联,于是在Canvas3D对象中所绘制的场景均来自于一个视平台的视点.这样运行程序就可经过修正视平台的TransformGroup节点,在虚构环境中遨游.图2 包括视平台的部分场景图3 Java3D的输入设施模型Java3D除了支持通用的键盘、鼠标输入外,还能给各种不连续的输入设施,如6DOF跟踪设施和操纵杆提供支持.由于不同的跟踪输入设施其上班原理不同,因此计算机与其交互的模式也不同.为了给不同的6DOF输入设施提供支持,Java3D还提供了一个输入设施接口,而且该输入设施接口还定义了一个形象的输入设施,只管用其可以成功对一特定设施的驱动,但输入设施接口的成功必定成功接口所定义的一切方法(如设施开、关、读取操作、形态设置及查问等)3D的输入设施列表就用这些方法同特定的设施启动交互.普通Java3D环境中,或许包括许多输入设施,而且这些输入设施不必定是实践的物理设施,也或许是虚构设施,例如经过软件的方法将鼠标的静止参数转化为6DOF虚构跟踪球的参数,来模拟虚构跟踪球的输入.由于一切的输入设施都由许多传感器对象组成,因此每一种输入设施都与必定数量的传感器对象相关,且每一种传感器都与其传感器设施6DOF数据的一个数据源相关.当输入设施驱动的数据扭转时,传感器对象的数据也会相应扭转,而且传感器对象由读取传感器对象组成.由于缓冲区中记载了各传感器N个读取传感器对象的值,因此可以对传感器数据启动平均,以及对传感器输入值的趋向启动预测等解决,但运行程序的开发并不间接经常使用输入设施3D是经过一个传感器数组将输入设施形象化,传感器对象数组是物质环境对象的一个子类,该数组是由与输入设施相关的对象指针组成程序可以间接从传感器数组中失掉传感器的值,并将其用到场景图中,或按恣意模式对其启动解决。
2.4 用Java3D开发VR运行程序应用Java3D开发的VR运行程序或许applets程序,可建造一个虚构场景,并能将一个或多个场景图拔出到虚构场景中,虚构场景由超结构对象集组成,对象集则包括一个环球对象(Universeobject)、一个或多个场合对象(Localeobjects)和按树状结构陈列的由节点物体组成的一个或多个场景图(Scenegraphs).该场景图又称为分枝图(Branchgraph),它包括绘制对象节点、光照节点、行为节点和声响节点等,其中,蕴含内容节点的分枝图称为内容分枝,蕴含视平台对象的分枝图称为视分枝,视平台对象用来确定用户的位置和方向.图3示意了具有多分枝图的Java3D场景.图3 运行程序场景图由于这种分枝图只形容了场景所要绘制的对象,并不确定对象的绘制秩序,因此图中节点的秩序和位置与对象的绘制秩序有关,而图中的父节点和子节点的直线门路就惟一确定了子节点的图形范围.由于绘制秩序的不确定性,因此使得Java3D能横越场景图的任何秩序,且它能从左到右,从顶部究竟部穿过场景图;或许从右到左,甚至并行遍历整个场景图3D的分支图为树状结构,且图中的每一个节点只要一个父节点.这样经过辅佐的场景图机制就可以成功通用场景图的共享,而且具有衔接属性的叶节点可以衔接到共享子图.分枝图中的节点分为群节点(groupnode)和叶节点(leafnode)两类,其中,群节点依照粘贴的原理来组织场景图单元。
群节点的档次结构图普通群节点包括:BranchGroup、TransformGroup、Switch、OrderGroup、DecalGroup和ShareGroup节点,其中,BranchGroup是分枝图的根节点;而TransformGroup用来指明一切子节点的位置和方向;Switch则用于成功一个或多个子图的转换;OrderGroup用于使它的子节点依照特定的秩序绘制;DecalGroup是OrderGroup的一个子集;ShareGroup跟BranchGroup一样,是一个场景图的根节点.只管共享图作为Java3D场景图的一部分从不间接发生,然而衔接节点可以援用.另外群节点还可以蕴含各种子节点以及所蕴含对象的群节点或叶节点.这些子节点用一个关联索引属性来准许对特定的子节点启动操作.假设没有指明特定的顺序群节点,Java3D还可以依照恣意指定的顺序来绘制群节点的子节点.只管叶节点是场景图的形象类,它没有子节点,但叶节点包括了Java3D的各种消息.叶节点由Shape3D、ViewPlatform、Sound、Light以及用户定义的行为节点等组成,Shape3D和ViewPlatform节点在Java3D的视模型和输入模型中表演着关键的角色,由于它形容了图形系统的两个关键方面,其中,Shape3D形容了场景中对象的几何形态,而ViewPlatform则标定了用户或其视点在虚构环境中的方向或位置.另外,运行程序还可像操纵分枝图中的恣意对象一样,来操纵ViewPlatform,而且运行程序还可平移、旋转和缩放ViewPlatform,即经过扭转ViewPlatform的位置和方向,ViewPlatform将随同用户的视点一同移动,来阅读整个虚构环境.只管ViewPlatform是依照事前规则的路途阅读场景,但不会限度用户视点的移动和向不同方向阅读场景.
谁有Java 3D 资料或许书籍,能有视频教程更好,谢谢
目前国际的,并且翻译上来的对于java 3D的真实是很少!我只见过三本书,一个是《JAVA3D交互式三维图形编程》人民邮电的,或许曾经不出版了。
还有一个是《计算机图形学运行Java 2D和3D》《 3D与计算机几何设计 》这两本书如今有卖的。
去出色买。
假设你英文很强悍,你还是去国外的网站找找看吧。
倡导你去java论坛上找找相关内容。
祝你喜气哈
java3dJAVA3D配置运行
Java3D在多个畛域中展现其弱小的配置,尤其在三维动画、游戏开发和机械CAD等方面施展着关键作用。
它虽不间接提供基本形体,但可经过内置的UTILITY工具轻松创立设方体、球体和圆锥等几何体。
此外,Java3D支持与第三方软件如ALIAS、LIGHTWARE和3DS MAX的集成,使得能够导入和经常使用这些软件生成的复杂形态,或许VRML2.0的形体模型。
与VRML相似,Java3D支持给形体赋予色彩和贴图,赋予它们丰盛的视觉体现。
它准许形体成功灵活变动,比如依据用户操作扭转观测点位置和视角,成功交互性,例如点击形体会触发程序照应,引发预设的程序变动。
Java3D的一大好处是其应用了Java言语的灵敏性,使得开发者能够编写出配置复杂的三维运行。
值得一提的是,它还提供了VRML所不具有的形体碰撞检测配置,这在须要准确物理模拟的场景中尤其有用。
作为一款初级的三维图形编程API,Java3D为开发者提供了全方位的支持,不只承袭了VRML2.0的个性,还在此基础上削减了更多的适用配置,极大地提高了三维运行的开发效率和或许性。
裁减资料
Java 3D是Java言语在三维图形畛域的裁减,是一组运行编程接口(API)。
应用Java 3D提供的API,可以编写出基于网页的三维动画、各种计算机辅佐教学软件和三维游戏等等。
应用Java 3D编写的程序,只要要编程人员调用这些API启动编程,而客户端只要要经常使用规范的Java虚构机就可以阅读,因此具有不须要装置插件的好处。