一、系列简介及软件介绍
二、界面简单介绍及场景配置文件介绍
三、基础功能小组协作使用时的注意事项
四、交互功能及python二次开发使用避坑
本人是一个机械大学生,毕业设计是虚拟现实的仿真实验室,所用到的软件是上海曼恒公司的IdeaVR2019版本,迄今为止,它已经继2019版本之后产生了2020版本,2021版本,功能都比2019版本全面很多。
但为什么没有使用其他版本或者是unity3D还有UE4虚幻引擎等一些强有力且配套功能齐全的设备呢。一个是因为IdeaVR2019版本支持Solidworks,Creo等工业软件模型的直接导入,而其它软件等需要3dmax进行转换,相对比较麻烦,另外我们学校实验室配备了相应的版本服务器,提供了专属的地方进行学习。同时自己也对python相对熟悉一些,它又是支持python二次开发的,所以在进行调研,查找资料之后,选择IdeaVR2019作为我的毕业设计进行开发。
本系列的文章的目的是想记录下自己在学习这款软件的时候遇到的坑,因为其软件相应的教程不是很完善,资料也不是很容易查找,所以想记录一下自己在学习过程中的问题及解决办法。如果自己有学弟学妹们再进行学习的时候可以减少他们摸索的时间,供他们参考。
特此说明:本系列文章不是教程,相应的教程请移步IdeaVR帮助文档以及相应的资料,由于在我的毕设时间里面里,python二次开发等功能也不是能够全部弄懂的,所以本篇文章旨在通过我们在探索过程中的一些问题解决办法示例来给学弟学妹们进行指导,帮助他们减少时间,去探索更进一步的功能。
下图为相应的调研与选择。
图1.1软件的调研与选择
IdeaVR是一款为教育、医疗、商业等行业领域打造的虚拟现实引擎,相比其它国外引擎主要定位于游戏开发,需要专业程序开发人员,而IdeaVR是专门定位于行业VR内容开发,零编程基础的非专业人员也可以熟练掌握。帮助行业用户解决在高风险、高成本、不可逆或不可及、异地多人等场景下的教学培训、模拟训练、营销展示等应用。IdeaVR 能够协助学校老师制作专业教学课件、进行多人VR授课、科研验证,帮助学生进行作业设计、分享设计成果。
在数据支持上,除了可导入建筑类BIM数据、工业类CAD数据和常见的OBJ等三维数据。
图2.1支持的类型
IdeaVR 2021 内置丰富的预设资源,包含基础模型库、环境库、粒子库、材质库以及人物角色库。同时提供可复用的项目模板,其中已预设了基础场景、UI 菜单控制、VR 头盔交互和视频播放案例等完整的交互功能。另外,资源商店中的工具类插件将持续更新,让不同行业的用户快速搭建出高品质的内容场景。
图2.2内置的资源
支持场景拆分,通过将复杂场景拆分为多个子场景,可由多位开发人员同步协作开发,实现复杂的交互逻辑。
支持平面UI和空间UI,用户可通过UI完成菜单选择、数据展示、场景切换、视频播放等交互逻辑,UI控件使用更灵活,实现系统级内容开发。支持 PC、移动端以及Web发布,满足一般配置的计算机快速部署、使用。
图2.3 图形化UI交互编辑器
内置工程文件,以及python模板案例,同时支持python第三方库的导入以及编辑。
下面是内置模板示例。
'''跳转到指定的目标位置'''
import IVREngine
def intersect(start, end):
return IVREngine.getIntersectionValues(start, end)
def screen_to_world_pos(pos):
ret = IVREngine.vec3(0)
x, y = pos
IVREngine.getScreenToPosition(int(x), int(y), ret)
return ret
def world_to_screen_pos(pos):
x = y = 0
IVREngine.getScreenPosition(pos, x, y)
return (x, y)
def get_mouse_intersect(multiplier=1000):
start = IVREngine.getPlayer().getPosition()
screen_pos = (IVREngine.getMouseX(), IVREngine.getMouseY())
end = screen_to_world_pos(screen_pos)
end += (end - start) * multiplier
return intersect(start, end)
def get_node_by_mouse(multiplier=1000):
_, _, _, node = get_mouse_intersect(multiplier)
return node
class JumpToTarget:
def __init__(self):
IVREngine.setType(IVREngine.ITR_NODE_TYPE.BIND_NODE)
def Update(self):
if IVREngine.getKey('j') and IVREngine.getMouseButtonDown(0):
pos_target, _, _, node = get_mouse_intersect()
if node is not None:
pos_player = IVREngine.getPlayer().getPosition()
pos_target += (pos_player - pos_target).normalize() * 3
IVREngine.setPlayerPosition(pos_target)
(1)硬件配置
关于硬件配置的说明:
1)使用 VR 头盔进行虚拟现实体验,需要计算机具有HDMI接口,且显卡至少为NVIDIA GTX 1060 或更高;
2)在使用 IdeaVR 创世的过程中,软件对 CPU/GPU 的占用率较高,鉴于目前轻薄本/商务本的散热系统效果不佳,故不建议长时间使用 IdeaVR 创世进行内容创作;
3)支持 Windows7 / 10 x64 位操作系统,
4)IdeaVR 创世依赖的运行库:
Microsoft .Net Framework 4.0 或更高;
Microsoft Visual C++ 2015 x64 Redistributable;
5)安装独立显卡驱动;
由于我们是小组开发,所以我的一系列细节问题也会围绕着上面的五个点的介绍进行展开,去介绍一个小组开发过程中的问题与解决方法,避免走弯路,同时由于我的毕业设计还在进行阶段,我会陆陆续续进性更新介绍。