
unigine
丘上人
如果感觉不好,那就自己动手
展开
-
unigine 鼠标 键盘 相关问题
使用unigine版本2.5.1unigine中鼠标键盘事件是由App类来与操作系统交互的,事件的交互只是将事件通知到unigine。具体怎么用,怎么响应,用来产生什么效果,还是需要通过显示调用api或者自定义逻辑。unigine 默认的使用鼠标事件是在core/sripts/system/system.h update中。在2.7.3里面有一个下面截图的说明。设置下面两者中的一种,就能让u...原创 2018-04-04 17:29:51 · 359 阅读 · 0 评论 -
unigine 三维旋转矩阵(mat3,quat) scale translate 变换矩阵(mat4) 和forward up right 关系 normal binormal tangent
三维中旋转矩阵可以用mat3或quat表示。 两者可以转换。在数学上,旋转和反射对应线代中的正交变换。每行(或每列)相互正交的矩阵且每行(或每列)模长为1,叫正交矩阵。unigine中是右手坐标系。顺时针方向的角度为正,逆时针方向角度为负知道y,z 求x:cross(y,z);(trick:将所求的轴朝向自己的反方向,顺时针代入已知的轴,只是在求轴的时候从这个视角,理解旋转的时候需要让轴朝...原创 2018-03-08 11:14:51 · 8159 阅读 · 1 评论 -
unigine ObjectDynamic ffp 对比 及shader使用
Ffp 是用于独立的渲染的,能结合shader textureRender render renderstate等灵活的将画面渲染出来。使用可以比较灵活。但是ffp有顶点限制,并且效率也是比较低的,需要每帧从cpu传送顶点去进行绘制,最关键是能传入的顶点的index是unsigned short类型的,数量有限。适用于顶点数小,并且每帧顶点都变化的对象渲染。ObjectDynamic 就...原创 2019-04-05 12:40:45 · 363 阅读 · 0 评论 -
unigine texture texturerender shader
unigine texture 有一个很好用的地方,如果外部没有什么地方依赖texture的width、height、format,则可以通过load和setimage方式直接替换texture中的贴图。texture实际渲染过程中是通过调用 texture.bind(int)来将texture 绑定到shader中对应的纹理中的。(渲染的结果可以通过TextureRender.bind...原创 2019-04-01 17:26:56 · 398 阅读 · 2 评论 -
unigine 渲染dynamicobject
ObjectDynamicPtr dynamic;TextureRenderPtr texture_render;TexturePtr texture;void fun1() // 放到init中{ int width = 128; int height = 128; texture_render = TextureRender::create(); t...原创 2019-06-17 17:39:49 · 347 阅读 · 1 评论 -
unigine intersection 射线检测 ObjectTerrainGlobal 失效
2.7.1最近碰到这样的问题,在init中使用射线检测函数无效,确认正确设置好点和mask解决办法:在init中最开始加入ObjectTerrainGlobalPtr terrain = ObjectTerrainGlobal::cast(Editor::get()->getNodeByName("Landscape"));terrain->setForceInt...原创 2019-04-19 12:00:55 · 223 阅读 · 0 评论 -
unigine geopivot 经纬度 空间坐标 三维平铺坐标
unigine中的geopivot 作用是进行 经纬度与空间坐标系之间的换算 以及 经纬度到三维平铺坐标之间的换算(先理解区分下经纬度 三维空间坐标 三维平铺坐标 这三个的概念:首先在unigine中如果没有geopivot节点,那么就只有一个三维空间坐标的概念。如果加入geopivot节点并且将其他节点放置到这个geopivot节点下,(如果其他的物体比较大,比如使用一个globalwat...原创 2019-06-17 17:33:59 · 334 阅读 · 0 评论 -
unigine objectglobleterrain
//render height outif (App::get()->clearMouseButtonState(App::BUTTON_LEFT)) { Vec3 pos = Game::get()->getPlayer()->getWorldPosition(); vec3 dir = Game::get()->getPlayer()->getDi...原创 2019-06-17 17:35:06 · 248 阅读 · 0 评论 -
unigine EllipsoidPtr get center 获取粗略球心坐标 获取当前位置粗略重力方向
GeodeticPivotPtr pivot = GeodeticPivot::cast(Editor::get()->getNodeByName("GeodeticPivot")); pivot->setOrigin(Vec3(0, 90, 0)); EllipsoidPtr e = pivot->getEllipsoid(); Mat4 mat...原创 2019-06-17 17:36:19 · 278 阅读 · 0 评论 -
unigine 多视口(viewport) 地形与贴图相对的运动
版本2.5~2.7.3unigine中的globalterrain有点类似于decal,猜测可能是为了节省texture数量。并且是以主相机视角来实现的。当你在辅助相机的viewport中看地形时,会发现地形的画面会与地形的mesh做相对运动。解决办法是,主相机不动。移动辅助相机。...原创 2019-05-10 16:40:03 · 367 阅读 · 0 评论 -
unigine 在 qt项目中在unigine画面上 添加 qt的ui
1、新的组件需要在setCenterWidget函数之后添加2、设置组件的父窗体为centerwidget或者mainwindow3、在2.7.3.1中默认的情况下,当qt 组件创建时传入的是centerwidget,如果想让鼠标显示在qt的ui上,需要加入如下参数,如果想完全按自己意愿操作请参看我的关于unigine 鼠标 键盘的 博客。...原创 2019-05-26 16:07:23 · 563 阅读 · 0 评论 -
unigine animation 移除动画位移 anim
适用于unigine 所有版本,动画相关的操作最好结合sdk bin中的resourceEditor来查看。步骤是1、先找出所有根骨骼,因为制作原因可能会有多根根骨骼。2、选择一根根骨骼作为参考,用于每帧提取其位移,并将这个位移用于所有骨骼的位移进行抵消。一般选取腰间的骨骼。void AnimManager::removeAnimTranslate(const char* mainBone...原创 2019-05-24 11:22:17 · 877 阅读 · 0 评论 -
unigine 加载data之外的路径
使用版本2.5Unigine 可以加载data之外的路径,代码如下不过这个代码之后,不会立即可以访问,需要 等待一定时间才能进行访问。可以通过FileSystem::get()->isFile(path) 来判断文件是否能访问。还可通过ulink来进行访问。在2.7中还可以通过类来加载packge,非常的灵活,通过这种方式,可以使用自定义的任何格式 甚至 文件夹。只要自...原创 2019-02-27 11:20:01 · 283 阅读 · 1 评论 -
Unigine mesh 文件结构 和 理解 surface、target、anim、bones、blend shape(形变)、UV
unigine mesh文件经历很多版本都没有变动过,测试版本2.7.2unigine 相关的官方论坛:developer.unigine.com比较详细的mesh描述可以参看文档的mesh file format 和mesh类及下面的一些结构上的说明, 以及mesh相关的类和案例mesh中的一大缺陷是不描述曲线。uigine 中mesh结构可以存放和修改动画、模型、骨骼及其他相关的东...原创 2019-03-06 12:33:35 · 1470 阅读 · 0 评论 -
unigine 判断文件或文件夹 判断是否存在
考虑到可移植性,可能会尽可能的利用unigine原生的函数来进行编辑unigine版本2.5 :1、通过脚本中的系列文件操作函数Engine::get()->runSystemFunction(Variable("is_file"), Variable("E:/workSpace/unigine/unigine_projects/unigine_project/data/140x4...原创 2019-02-20 16:59:34 · 1132 阅读 · 0 评论 -
unigine 脚本 (uniginescript) 智能提示
unigine脚本没有专门的编辑工具,但是 官方的demo中却有大量的脚本写的代码,并且sdk中的core中也有很多脚本实现的库。脚本由于支持活加载。所以对于很多小型的功能特别方便使用。用处也很大。可以自己找一个代码编辑工具进行脚本编辑,notepad++或者sublime。但是前提是需要有脚本的关键字。并导入到编辑器中。导出Uniginescript关键字方法如下:1、在运行debug...原创 2018-10-24 15:18:12 · 474 阅读 · 0 评论 -
unigine qt project crash in start
with unigine 2.7.1 qt frameafter set the D3d11AppQt as sub widget of other widget (the crash bug will not occure in center widget),and start the engine , unigine will get crash over here.after d...原创 2018-12-19 18:30:34 · 299 阅读 · 0 评论 -
unigine qt 子窗体中显示unigine画面,启动后主窗体被resize 了。
使用qt版本5.11.0,unigine2.5.0经过调试和诊断,发现一个比较奇怪的bug来源。将unigine画面显示到qt子窗体上,启动引擎后,发现mainwindow被resize了。 经过调试,发现这个信号是从windows Api过来的。qt内部的resize事件并不会通过windows APi传递过来。图1表示engine启动时触发的主窗体的resizeEvent函数体的过程...原创 2018-12-20 15:27:33 · 407 阅读 · 0 评论 -
unigine lookAt
unigine中存在如下两个函数。mat4 lookAt(vec3 position, vec3 target, vec3 up)dmat4 lookAt(dvec3 position, dvec3 target, vec3 up)该函数求取相机的modelview ,相机的modelview 与相机的变换矩阵transform刚好互逆。所以求取相机的变换矩阵应该是 tranform...原创 2018-12-17 14:47:40 · 310 阅读 · 0 评论 -
unigine NodeReference
测试使用unigine版本 Unigine2.3.1Unigine NodeReference是内部类, 用于导入unigine特有的内部的node文件。用NodeReference添加节点后,经常可能会出现 删除节点失败的现象。如下为我的node 文件结构node Reference导入后,产生一个通过getReference 或者detachReference,能获取到对应的节点...原创 2018-12-18 12:05:04 · 310 阅读 · 0 评论 -
unigine anim动画 相互影响问题
使用版本unigine2.3.1unigine中对objectskinnedmesh 设置anim动画,如果使用同一个node 对象,会发现动画乱串(此处应该为一个bug),如a,b两实由同一个node文件创建,设置a的anim,会导致b也运动起来。解决方法,创建对象时,对其自身和对他们所有的子对象全部重新创建。...原创 2018-12-18 12:19:37 · 297 阅读 · 0 评论 -
让物体绕固定点做圆周运动 让物体到达目的点
考虑了很多思路,但是大部分实际实现与预想的有很大差异,终其原因,是因为每帧的所消耗的时间是不定的,且轨迹离散,所以每帧都可能需要做轨迹的稍微修正(这种修正帧率越低速度越快会导致越明显)。下面的思路是比较简洁和高效的一种方式。对于3d中的物体运动到目标点或者运动到目标轨迹,都需要先考虑如何让物体到达目标点或者轨迹。这里只讲述如何到达目标轨迹。对于有需要考虑精确的加速度的运动,需要考虑路径积分等复杂...原创 2019-01-04 17:03:53 · 4021 阅读 · 0 评论 -
unigine interface plugin 使用
使用unigine版本2.7.2。unigine 官方自带的插件都能在sim的sdk/source 下找到对应的源码。有的是c++的有的是uniginescript的。uigine中的interface插件可以让窗体移动到主窗口之外。unigine内部实现的ui,默认都支持interface功能。如果项目中配置了 interface插件,就能生效。1、从sdk_dir/source...原创 2019-02-15 18:52:02 · 695 阅读 · 0 评论 -
unigine 正确删除node节点
正确删除node节点,代码如下。void destroyNode(NodePtr &node){ while (node->getNumChildren()>0) { NodePtr temp = node->getChild(0); temp->grab(); destroyNode(temp); node->removeChil...原创 2019-02-12 10:21:57 · 312 阅读 · 0 评论 -
unigine ffp 渲染图片
使用unigine版本 2.7.2项目需求,将ffp通过设置uv用于对图片的畸变矫正。int render() override{ render(Game::get()->getTime()); return 1;} TextureRenderPtr texturerender;TexturePtr tempT;TexturePtr tempT1;void re...原创 2019-06-17 17:40:17 · 366 阅读 · 0 评论 -
ungine anim 人物动画混乱 动画融合
适用于版本 2.3 及以上unigine anim 从3Dmax 或从 fbx 之类的文件中导出的anim文件总是有些问题。anim文件在sdk/bin 下有一个resourceEditor.exe 可以进行查看。比如一套动画,导出后莫名其妙的变成两套,并且动画的命名也是存在问题,动画名为default 和Take001。 因为 这个原因,导致给人物A播放动画anim1 ,会影响同mesh...原创 2019-02-27 18:12:10 · 344 阅读 · 1 评论 -
unigine meterial 卸载
使用unigine版本2.5unigine material卸载后,再装载材质, 当重新导入使用该材质的node文件,会发现材质无法与node中的mesh进行自动绑定。两种方式可以解决这个问题。1、将 node文件进行简单的解析,逐个mesh去设置材质。NodePtr node = Editor::get()->getNodeByName("yyyy"); if (no...原创 2019-02-19 11:51:47 · 173 阅读 · 0 评论 -
unigine 自定义形状 rigidbody创建
Vec3 min (100000, 100000, 100000); Vec3 max(-100000, -100000, -100000); for (int i = 0; i < RIGIDTESTCOUNT; i++)// { //MeshPtr mesh = Mesh::create(); //Primitives::creat...原创 2019-06-17 17:39:21 · 445 阅读 · 0 评论