自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

吃货敲代码

请踏踏实实的推导数学公式!

  • 博客(77)
  • 资源 (1)
  • 收藏
  • 关注

原创 关于在Unity3D中使用C++ DLL库的记录

 啊,long time no see...大概又是很久没有更新博客了。好消息是我今天正式收到了转正邮件了。最近get到了一个新技能,就是在U3D中调我们自己写的C++的库。之前也有用到过,但都是导师来接好了,没有自己研究过。现将内容记录如下。1. 关于Unity中导入外部库,在PC端和安卓端pc端使用的是C++  test.dll, 安卓端使用的是 libtest.so. 其中安...

2018-11-02 16:52:28 1127 4

原创 git的使用方法记录(一)新建分支

版本控制真的是个很头疼的问题,萌新入职四个月了,用了svn,也用了git,除了会pull,就只会push了。要改什么工程的时候,总怕改错,就复制一份,在另一个工程改,导致现在我自己的某个工程,有好几个版本,每个版本都有需要的功能,头疼。。如果会版本管理,会切分支,合并分支会不会好一点呢。刚刚PM突然说需要出个文件,但我本地的工程被改的面目全非,需要回退到之前的版本,但我现在改的版本也是需要...

2018-07-31 19:56:54 616 2

原创 GLM 踩坑记录

谨以此贴记录一下GLM踩过的坑,说到底还是菜了。。。1. 关于四元数的构造顺序是w,x,y,z....某次要导入动画文件,一直卡着,找不到问题,才发现原来通过glm::quat()构造四元数的时候的顺序是glm::quat(w,x,y,z),最惨烈的是调试的时候显示的顺序是x,y,z,w,之前用unity构造四元数的时候也是x,y,z,w。2.有一些glm的方式接受的参数是弧度,有一些接收...

2018-07-29 18:05:31 2993 2

翻译 【译】BVH,Biovision hierarchy 关于BVH 文件类型

这是一篇翻译,因为要了解一些BVH,看到一篇文章还不错,也不长,就边翻译边记录一下吧。原文链接: http://www.mindfiresolutions.com/BVH-biovision-hierarchy.htm原文作者:Manjunath背景:原文作者要将动画数据导出到 .bvh文件中,没有相关的SDK来写bvh文件,所以他就写了一个C++来导出animation data到bvh的代码。...

2018-06-27 11:21:28 2730 2

原创 骨骼动画驱动的一般方法,以及使用FBX SDK的一些实现

我终于要更新博客了,进公司之后每天学的做的很多,但真正有时间去总结的时候很少。之后的话尽量每周都要做一个知识的总结和积累吧,一方面自己真的是做过就忘,另一方面也能够将自己踩到的坑,遇到的问题与大家分享一下。入职三个月吧第一个月最主要的事情就是在骨骼动画的驱动,一开始是研究的Assimp这个库,也实现了相应的功能,但后来发现坑实在是太多,对之后的扩展也不好,最后还是开始啃超级不友好的FBX SDK。...

2018-06-24 15:22:01 5747 5

原创 C++ 学习笔记(五) 各种变量 && extern、static关键字

1、局部变量:只在局部作用的变量,比如在函数体中、在for循环中、在if语句中声明定义的变量,如果不加特定的关键字,他就是局部变量。2、全局变量:作用于整个程序的变量,可以被多个源代码文件共享。它被定义在函数的外部。在不同的源程序中使用已定义的全局变量需使用extern关键字声明,告诉编译器,这个是已经在其他源代码中定义过的全局变量。全局变量只能被定义一次,但可以被声明多次。//file_1.cp...

2018-03-14 10:42:53 455 1

翻译 TUIO学习笔记1-TUIO 1.1 Protocol Specification协议规范/标准

写在前面:(吐槽)基本上是翻译了TUIO协议标准,为什么没有大神来翻译这个。看的很辛苦。翻译的肯定很多不准确的。好奇能不能不看这个标准,直接使用呢。为什么我总是要学习这些很难的不会的东西呢。—————————————————————————————————————————————————————————————————————————————http://www.tuio.org/?specifi...

2018-03-14 10:18:02 10104 5

翻译 TUIO学习笔记2-TUIO C++ Reference Implementation and Demo Application参考实现和Demo程序(图片版,防查重)

2018-03-14 10:17:49 2166 11

原创 HTC VIVE开发笔记(五) VRTK3.2.1与SteamVR1.2.2 集成步骤 Unity5.6 (防查重图片版。。。)

2018-03-14 10:17:35 1494 2

原创 OSG学习笔记17 创建和处理用户定义事件 UserEvent(防查重。图片版)

2018-03-14 10:17:13 1620 1

原创 HTC VIVE开发笔记(二)凝视效果(图片版,,防查重。。。)

2018-03-14 10:16:27 1044 1

原创 C++ 学习笔记(四) 关于sizeof的用法

1、在32位机器上,指针的大小为4,64位系统上,指针的大小为8int *p;cout << "size of pointer: " << sizeof(p) << endl;输出结果为 42、数组的大小,和数组作为形参,退化成指针的情况(1)数组大小int a[10];cout << "size of int array[10]: " <

2018-03-13 16:51:46 323

原创 数据结构(一) 交换排序

最近只看了冒泡和快排这两个算法,今天面试就让写排序,用电脑写,一去就让写代码,贼慌,然后面试官小姐姐真的贼好看,就是和面试官小哥谈论我的简历,坐在我对面,看着我写代码真的贼慌。。一开始本来想写快排,因为紧张,大脑短路,满脑子都在冒泡泡。。最后还是写了冒泡,,这里再回顾一下冒泡和快排吧,巩固一下,免得一紧张就慌的写不出来。(一)冒泡泡排序法总的思想就是从待排序表的底部,通过两两交换的将较小的元素交换...

2018-03-12 20:31:03 743

原创 面经(三)首次现场面试—U3D客户端开发工程师

自己人生的第一次的现场面试就来了个陡的,面试机会是因为在某app上点开了某公司的C++服务器端岗位,该app就自己给我发了一条,我对这个岗位很感兴趣,然后对方大佬就找我要了简历,我点击同意,大佬回复收到,我甚至都不敢去搭话,对这样的大厂也是心怀敬畏,结果第二天,有一个未接来电,现在我是不会放过任何未接来电的,回过去之后,那边就说看到了我的简历,大概问了下我的情况,问为什么没有找工作,我就说啊之前申...

2018-03-10 19:47:27 3958 2

原创 C++学习笔记(三)字符串

一、C风格字符串1、字符串常量 “Hello World”:C++中所有字符串常量都由编译器自动在末尾添加一个null字符。2、末尾添加了'\0'的字符数组eg.char s1[] = "Hello";char s2[] = {'H','e','l','l','o'};char s3[] = {'H','e','l','l','o','\0'};s1编译器会自动添加一个空字符在末尾,所以是C风...

2018-03-05 18:55:11 300

原创 C++ 学习笔记(二) 多态的实现

前几天面试的时候被问到了多态的实现,平时确实没有用到过。今天特意去看了相关的知识,并实现了一下,来看一看输出结果,并分析一下导致这样的结果的原因。#include "stdafx.h"#include<iostream>using namespace std;class Father{public: virtual void TestV() { cout <&...

2018-03-05 10:07:12 278

原创 面经(二)第一次电话面试——3D编辑器开发工程师

年前的时候就看到该公司的招聘,很喜欢该公司的产品,于是就马上跟HR联系,发了简历,并且聊了几句。在聊的过程中,以及之后给面试通知,真的很nice。很喜欢这样的创业团队。面试官也很nice。这次面试,事先有准备一下,但还是有些东西忘记说。但整体来说比第一次的QQ面试要好太多。人总要进步。并且可能第一次确实是遇到了不太常见的难的面试。整个流程是先让我介绍一下我在学校做的项目,面试官真的有在仔细的听,并...

2018-03-03 18:45:54 769 1

原创 HTC Vive 开发笔记(七)启用和关闭VRTK_Pointer 指针

查看API文档,看到的是使用VRTK_Pointer下的Toggle()方法来进行指针的开关,实际代码中使用如下语句gameObject.GetComponent<VRTK_Pointer>().Toggle(true);并没有达到想要的效果,然后google之后看论坛找到了另一种方法。通过获取VRTK_Pointer的enable,来设置开启true和关闭false。需要同时设置VR...

2018-02-08 10:23:36 1369

原创 面经(一)人生第一次面试—一首凉凉送给自己

因为错过秋招,现在才开始找工作,对自身的定位也不足,不知道到底可以做什么。瞎投了一通简历,下载了一堆求职app。某app上,某游戏公司hr小姐姐找上了我,问我要了简历,一开始我是想找C++开发岗的,后来据说有U3D的岗位就想去试试看。真正接触U3D的时间大概就两个月吧。聊的还不错,然后就安排了笔试。然后就开启了我的被虐旅程。整整三个小时的开卷笔试。全程靠百度,看Unity官方文档,还有师弟,同

2018-01-07 15:57:46 3660 10

原创 HTC VIVE开发笔记(六)VRTK中实现基本抓取物体的配置

一、配置要交互的游戏物体Step1: 选中需要交互的物体,点击菜单栏Window->VRTK->Setup Interactable Object这里就可以选择配置相应的属性,包括Touch Options,Touch Highlight Color手柄触摸到物体时物体的高亮颜色Grab Options,Is Grabbable是否可以被抓取,Hold Button To Grab

2017-11-26 14:41:09 1943

原创 HTC VIVE开发笔记(四)Interaction System插件手柄交互基础

(1)交互的基础——Interactable组件给一个物体,或者UI添加Interactbale组件后,标记这个物体是可以和手柄进行交互的。给Cube添加Interactable组件后,cube即被标记为可以进行交互。当手柄接触到可交互物体时,手柄会高亮,并震动一下。手柄高亮:这一部分是在Player组件下的StreamVRObjects-Hand-ControllerHove

2017-11-06 16:55:49 4291 2

原创 HTC VIVE 开发笔记(三)利用SteamVR中的InteractionSystem实现场景中的瞬移及场景跳转

Interaction System from the Lab. 是SteamVR更新后版本中提供的一些VR中基本交互的SDK。其中就有为业界所采纳的VR场景中的移动方法,瞬移:Teleport.1)设置Teleport瞬移机制要让场景能够有瞬移的交互,非常简单,将SteamVR/InteractionSystem/Teleport/Teleporting组件拖进场景即可。接着就可

2017-11-06 14:45:06 6328 1

原创 HTC VIVE开发笔记(一)使用SteamVR插件进行基本的交互

1、获取手柄的引用:目前没有区分左右手柄 private SteamVR_TrackedObject trackedobj; private SteamVR_Controller.Device device; trackedobj = GetComponent(); device = SteamVR_Controller.Input((int)trackedobj.index);

2017-10-29 15:08:17 8873

原创 使用Unity3D进行HTC Vive开发过程中遇到问题记录

1.Assertion failed on expression: 'IsMatrixValid(matrix)' && Unity SteamVR: Failed to loadIVRRenderModels interface version IVRRenderModels_005。并且SteamVR插件中的demo不能渲染出手柄。解决方法:应该是版本不合适,重新下载steamVR 1

2017-10-24 19:30:37 4108 1

原创 Unity3D学习笔记1——Unity大法好呀

Unity大发好啊

2017-07-21 21:05:38 850 4

翻译 Leapmotion开发笔记2——System Architecture系统架构

系统架构Leapmotion软件在Windows系统下是作为服务器(Service)或者在Mac,Linux系统下作为daemon。该软件通过USB总线连接到Leap Motion控制器上。基于Leapmotion开发的应用程序通过连接Leap Motion服务器来接收运动捕捉数据。应用程序接口Leap Motion SDK提供两种API来获取Leap Motion的数据:一种是原

2017-05-31 20:35:49 954

翻译 Leapmotion开发笔记1- API Overview 综述(翻译)

哈哈哈劳资触摸屏的做完了,终于可以做下一个内容。。仿佛又是挖了一个坑。自己挖的坑哭着也要填完,否则毕业堪忧啊。。看了下leapmotion官网提供两种API,一种是Orion,一种是V2。 看了一下介绍,查了些资料,Orion主要是为虚拟现实开发的,并且对手势的追踪更加的准确。也是比较新推出来。可以看看A站的一个视频,对比这两种软件的效果。硬件都是采用的一样的。http://www.acf

2017-05-31 11:37:26 920

原创 OSG学习笔记26——创建HUD,并调用事件修改显示内容

好久没有更新博客啦~最近有点停滞不前的感觉,今天终于实现了几个功能,可以更两篇博客啦~目标:想通过点击菜单来修改HUD的提示信息。其实很简单啊,但我就是自己想不出来。主要参考的是这篇博客里面的实现。http://blog.csdn.net/tmljs1988/article/details/7563016关于HUD还参考了这篇博客http://www.cnblogs.com/chaoswo

2017-04-26 21:17:43 1726 5

原创 OSG学习笔记25——屏幕坐标——相机坐标——世界坐标之间的转换

osg::Vec3d TrackballRotate::screen2World(osg::Vec3 screenPoint)//将屏幕坐标转换到世界坐标{    osg::Vec3d vec3;    osg::ref_ptr camera = viewer->getCamera();    //osg::Vec3d vScreen(x,y, 0);    osg::Matr

2017-04-13 16:28:54 7888 5

原创 OSG学习笔记24——根据鼠标平移的位置正确设置物体平移量

一直以来都没有将这个平移量设置正确,也没有考虑清楚这个视景体的问题。今天终于弄明白啦。先看图,其实归根结底都是透视投影的原理。之前计算平移量的时候总是得不到正确的平移,也没有理解到为什么,经过实践检验真理,才真正理解到了原理。在屏幕上的鼠标移动只是计算了在屏幕上移动的像素,要想正确的映射到物体的移动量上,就需要将这个量投影到真正的操作平面,就是这里的D平面。讲一下实现流程,假设鼠标

2017-03-31 15:32:25 2418

原创 OSG学习笔记23——设置隐藏和显示节点(使用setNodeMask())

首先一开始设置场景中的某个节点为隐藏状态mtCenter->setNodeMask(0);一开始尝试在eventHandler里面使用节点名字来遍历这个节点,发现根本找不到,因为设置为隐藏节点,大概在遍历的过程中跳过了这个节点。(虽然这个节点明明还存在在内存中)If wrong, fix me please~之后就只有通过viewer获取场景数据,获取到根节点,并且指定子节点来设置该节

2017-03-29 14:47:45 4688

原创 OSG学习笔记22——设置物体透明,再恢复

设置物体透明,trans是透明度的设置,这里如果没有setRenderingHint()虽然看起来是透明的,但模型还是会遮挡其他模型。然后就是BLEND要打开,光照和深度测试要关掉。模型的材质也要事先设置。并将材质保存起来以便恢复的时候调用。 osg::Material *material = new osg::Material; material->setDiffuse(osg::Mate

2017-03-29 14:37:39 3848 2

原创 OSG学习笔记21——有关getProjectionMatrixAs...的trick

这是一个关于投影变换的问题,经过model-view变换后,场景中的物体放置了希望的位置上,就需要投影变换来将三维物体投影到二维屏幕上。投影变换的目的就是定义一个视景体,使视景体之外的部分被裁剪掉,最终进入图像的只是视景体内的有关部分。关于投影变换的其他内容就不介绍了。这里来讲讲为什么getProjectionMatrixAsPerspective(fovy,aspectRatio,z

2017-03-25 17:29:43 2517

原创 OSG学习笔记20——光照和材质的设置(正确绘制出想要的颜色)

本来一开始学习OSG和Opengl的时候,因为用不太到关于颜色渲染之类的内容,关注的比较多的都是如何与场景进行交互。现在突然想给场景添加一个地面,发现不能得到正确的结果,并且加载进来的模型也会随着地面颜色的改变而呈现不同的颜色。

2017-03-25 16:43:31 9316

原创 OSG学习笔记19——再看pick点选物体

之前一直使用的pick方法就是将第一个点选到的节点保存下来,如果场景中只有一个物体,当然是没有问题的。当场景中出现多个物体,并且每个物体设置了标签,是可以被修改还是不能被修改,当两个物体重合的时候就不能得到正确的结果。正确的做法是:用迭代器遍历所有获取到的节点并再遍历nodePath,找到需要的节点,并根据标签判断其是否可以被选中来执行操作。这里我对物体标签设置的方法应该是不够科学的,我用

2017-03-22 09:53:08 1632

原创 OSG学习笔记18 - 关于物体绕指定点旋转的问题(非坐标轴原点)

两种解决方案:1、使用PAT节点,即PositionAttitudeTransform节点类中的,setPivotPoint(const Vec3d&)来设置旋转轴心或缩放轴心。这个是查到的方法,但实践没有成功,在调用这个setPivotPoint()方法时,模型总会发生位移,没有找出原因。这里贴出一下osg forum里的相关内容,希望能有所帮助。http://forum.opens

2017-03-14 21:15:38 6481 5

原创 Trackball rotate的OSG实现(二)(不是manipulator那种~是动物体那种!)

接上篇,这是篇水数量的博客。bool TrackballRotate::handle(const osgGA::GUIEventAdapter& ea, osgGA::GUIActionAdapter& aa){ viewer = dynamic_cast(&aa); if (!viewer) return false; switch (ea.getEventType()) {

2017-03-09 19:41:08 810

原创 Trackball rotate的OSG实现(一)(不是manipulator那种~是动物体那种!)

先写一下我的大致实现流程 鼠标单击模型,调用pick函数,来判断是否pick到了物体,并且获取模型的包围球中心和半径来作为我们这个virtual trackball的方程,哦,还要获取当前模型的位置。 然后将屏幕上的点映射到世界坐标下的球面上。Created with Raphaël 2.1.0开始获取屏幕上的点 (x,y)得出球面上映射出来的z坐标求出rotateParameter结束详细叙述

2017-03-09 19:38:22 2118

原创 OpenGL Object Mouse Trackball 三维物体的trackball旋转实现原理

https://www.khronos.org/opengl/wiki/Object_Mouse_Trackball这是一篇翻译+碎碎念~~~翻译的不好,见谅引言trackball(又称 arcball)是为了复杂三维物体的旋转操作提供一个直观的用户界面(User Interface,UI 这里译成用户界面感觉怪怪的),使得旋转操作通过一个简单的虚拟的球体来实现。球体是虚拟轨迹球的很好的选择,因为球

2017-03-08 21:12:39 6104 8

原创 OSG学习笔记17——正确设置物体的缩放矩阵

问题:做了一个触摸屏上的三维模型的缩放功能,发现在对模型进行缩放的时候模型的位置会有偏差。解决方法:问了王大大之后,再查了一下资料,记录于此。参考资料《在OSG中的实现三维物体的标准变换》 许昌学院学报 2008年 一篇久远的文章。在OSG中进行变换容易出现问题的原因1、基本变换是默认以世界坐标为变换中心的2、我们所期望的变换是以物体为变换中心因此,每次变换时,需要将变

2017-03-04 12:15:22 2273 3

模拟太阳系(日月地)+红青立体显示的OSG实现

这是一个期末大作业。按老师的要求要实现纹理,光照,交互等 这个代码主要就是实现了球体的贴图,添加了一个光照,还有通过键盘来操控球体的功能。

2017-03-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除