> 文章列表 > 基于开源 web3引擎的三维系统的开发

基于开源 web3引擎的三维系统的开发

基于开源 web3引擎的三维系统的开发

 

目录

 结合图像特征的平滑恢复技术

1.开发步骤

2 应用案例开发

结束语


应用 Web3D 引擎开发的计算机仿真系统或虚拟现实系统均需在 Web 浏览 器 上 运 行 需要其能快速下载和
运行 并且尽量不需下载特定插件 采用基于 JAVA 技术的开源 Web3D 引擎开发的三维系统可以满足上述要求
发的展示系统可以实现三维图形的旋转 缩放 等 交 互 功 能 此 外 在系统开发过程中对引擎中不完善的部分进行了
必要的修正

 结合图像特征的平滑恢复技术

图像恢复是数字图像处理领域中的一大类技术
像恢复技术是要将引起图像降质的过程模型化 然后根据
相应的退化模型和知识重建来恢复原始的图像 由 于 造
成图像降质的原因众多 目前没有统一的恢复方法 在 对
信号源或衰减特性作了某些隐含假设后 目前常用的典型
恢复方法有迭代直接逆滤波 维纳滤波 最大熵恢复 约束
的最小二乘方滤波等 对于退化的图像 噪声是一种常见
的图像退化因素 并且图像恢复又对噪声十分敏感 而上
述这些方法仅从整体上考虑了噪声的幅值因素 即信噪比
等因素 ), 没有考虑到噪声对图像的不同内容或特征的影
一般意义上 一幅图像的结构可分为光滑区域 阶 跃
边缘 屋顶边缘和噪声颗粒 表现为光滑区域 边缘线
和孤立点等 特 征 恢复后的图像噪声不可避免地会被放
而这个放大的噪声对图像中不同区域的影响是不一样

1.开发步骤

根据 Web3D 引擎 idx3D 中经修改后的各类的属性和
方法 总结了以下的开发步骤
为所开发的 系 统 建 模 系统需要先建立模型
能对相应对象进行交互式处理 由 于 idx3D 引 擎 中 没 有
建模的功能 需要借助其他建模工具实现建模
构造场景 系统中 摄像机 光源以及物体等各类
对象都要置于场景中予以管理和操作 因此首先要构造场
加入材质和灯光 在场景中需要加入相应的材质
和灯光
将模型文件导入程序中 导入的物体模型添加到
场景中
重构场景 以及场景规格化 由于场景中添加了
材质 灯光以及物体模 型 等 内 容 需要将这些对象重构成
新的场景 并对场景进行规格化操作
初始化渲染 状 态 对重构后的场景进行渲染
时是静止状态 并没有交互式的操作

应用案例开发

2.1 开发系统的简介
应用基于 JAVA 技 术 的 Web3D 开 源 引 擎 idx3D
发了一款陶瓷 产 品 ——— 茶壶的三维展示系统 所 开 发 系
统的功能如下 可以根据用户的需求建立茶壶的模型
可以自由设置茶壶的花纹和材质 通过鼠标的移动
可以实现对茶壶对象的旋转操作 通过键盘的操作
以实现对茶壶对象的缩放操作 具 体 来 说 按 动 键 盘 上
字符 茶壶 对 象 会 放 大 按 动 键 盘 上 字 符 茶 壶 对
象会缩小
2.2 具体实现
2.2.1 3D 建模
Autodesk 3D sMax 工具 为茶壶进行建模
进行贴图建模和贴图完成时的截图如图 所 示 建 模 完
成后 生 成 .max 文 件 由 于 Web3D 引 擎 idx3D 的 要 求
需要导出一个 .3ds 文 件 和一个用于贴图 的 .png 图 像 文
2.2.2 代码的实现
本节中主要介绍开发流程的实现 以及主要部分的方
法调用等内容 代码的流程如图 所示 主要介绍了
函数 init ()、 update ()、 mouseDrag () keyDown ()。
功能上看 init () 函数主要实现了对整个系统的构建 up
date () 函数实现对场景的渲染以及描画到显示器的相应
窗口即 applet mouseDrag () 函数主要实现了鼠标操作
的功能即对物体旋转的操作 keyDown () 函数主要实现了
键盘操作的功能即缩放功能
publicvoidinit () 主要进行了该系统的初始化
处理 中介绍的开发步骤的具体实现 包括
构建场景 newidx3d _ Scene () 语句创建场景对
参数为场景的大小尺寸
为场景添加材质和灯光 调用 addMaterial ()
为场景添加材质 根据材质的不同指定不同的参数
调用 setAmbient () setBackgroundColor () 这两 个 方
为场景添加灯光和背景颜色
导入建好模型的 .3ds 文件 newidx3d _ 3ds _ Im
porter () .importFromURL () 语句创建导入文件对象
数为所建模型 .3ds 文件的路径和场景的对象
重构场景和场景的规格化 重构场景时 场景对
scene 调 用 rebuild () 方 法 将 材 质 Material 和 对 象
Object 生 成 对 象 数 组 对场景规格化时 场 景 对 象
scene 调用 normalize () 方法来实现规格化
重置场景矩阵 由于场景和对象都在本地空间下
建模 在规格化之后需要将场景和对象在本地空间下的坐
标转化为世界空间下的坐标 进行重置场景矩阵的计算
具体实现通过语句 scene.matrix.reset ()。
设置摄像机的位置 建立视图空间 将摄像机的位
置设为点 -100 ), 设置摄像机位置的语句为场景对
scene 调用相应方法 scene.defaultCamera.setPos
-100 )。
修饰 类 型 为 public 无返回值的同步方法 update
参 数为 Graphics 类型的对象 publicsynchronizedvoid
update Graphicsg 进行两个操作
将连同对象在内的整个场景渲染到一张图片中
场景对象 scene 调 用 render () 方 法 render () 中 是 调 用
renderPipeline 中 的 render this.defaultCamera 方 法
参数为默认摄像机
这一部分是将连同三维图形在内的三维场景 转化为
具有三维效 果 的 二 维 图 像 下一步是将这个图像描画在
applet
将渲染好的图片画到屏幕上 此 处 实 例 化 Graph
ics 对象 调用 drawImage () 方法在 applet 上进行描画
publicbooleanmouseDrag Event
evt intx inty
场景 对 象 scene 调 用 rotate () 方 法 进 行 旋 转 处 理
rotate () 方 法 在 Scene.java 继 承 自 的 CoreObject.java
定义 rotate () 方法实现旋转的具体思路为 分别计算绕
轴和 轴旋转时的变换矩阵 再相乘而得到一个变
换矩阵 再进行渲染
publicbooleankeyDown Event
evt intkey
景对象 scene 调用 scale () 方 法 进 行 缩 放 处 理 scale ()
的参数分别是 zoomIn () 方法和 zoomOut (), 放大时 参 数
zoomIn () 方 法 缩 小 时 参 数 为 zoomOut () 方 法
zoomIn () zoomOut () 的 作 用 类 似 都是用来计算缩放
比例的方法 zoomIn () 用来计算大于 的比例 zoomOut
则用来计算 小 于 的 比 例 scale () 方法实现缩放的具
体思路是 通过 zoomIn () 方法或 zoomOut () 方法计 算 出
来的缩放比例计算相应的变换矩阵 再进行渲染

结束语

本文在对 比 了 几 种 3D 技 术 的 基 础 上 介 绍 了 开 源
Web3D 引擎 idx3D 的 具 体 实 现 以及对原引擎的优化
在此基础上 明确了 基 于 开 源 Web3D 引擎开发系统的流
以及具体开发方 法 最 后 提供了一个茶壶展示系统
的开发实例 该实例的运行无需下载特定插件

 

 

科技新闻网