自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 收藏
  • 关注

原创 FBX SDK的使用:读取Mesh

首先SubMesh是顶点索引数组的一部分,作用是一个Mesh的不同部分可以使用不同的材质,比如眼镜的镜框和镜片,对应3DMax里面材质ID的功能,给不同的Polygon设置不同的材质ID,通过。法线,UV的读取和位置相似,都是先获取一个索引,然后通过索引去数组里面查找对应的值,但是索引和数组要根据映射和引用模式去获取。这里读取出来的数据,顶点数组的长度和索引数组的长度相同,不做顶点去重。,读取来的数据是直接在OpenGL使用的,因此顶点数据不需要做转换,如果是在DX使用,需要做转换,可以参考。

2025-02-03 15:32:10 842

原创 FBX SDK的使用:基础知识

是动态库,需要在中添加;是两种静态库,不同的是运行库选项,在中设置/MD或/MT/MDd和/MTd时debug模式。mtLIBCMT.libobjmdMSVCRT.libobjMSVCRT.dllmt如果时debug模式的静态链接,还需要在项添加LIBCMT项添加:FBX SDK可以使用多线程,但是不保证线程安全。

2025-01-31 23:34:21 1670

原创 《经典力学》笔记

ri为矢量,刚体的质量是均匀分布的,每个ri都有另外一个相反的ri与它对应,因此最后一项为0。从刚体通过质心的直轴(质心轴)的转动惯量,计算出刚体对平行于质心轴的另外一直轴的转动惯量。弹性碰撞的碰撞前和碰撞后机械能守恒,非弹性碰撞的碰撞前和碰撞后机械能不守恒。为通过质心轴的转动惯量,M为刚体的质量,d为质心轴到另外一轴的距离。和动量守恒一样,在没有外力的情况下,系统内部的角动量是守恒的。比如,物体m由粒子构成,物体的动量为所有构成粒子的总动量,,由牛顿第三定律,力的作用是相互的,粒子的合力。

2025-01-02 00:04:08 894

原创 物理运动模拟基础

但在游戏中,我们每帧的时间可能为30ms,离无限小差很远的,所以是无法准确模拟现实的。回到问题,在dt的时间内,我们无法知道位置的准确路径,但是我们仍可以用一个方程来表示它,设为方程x=f(t),使用泰勒级数展开。可以明显看到,欧拉积分方法是泰勒级数展开的前两项,导数的最大结束是一阶,所以欧拉积分方法是一阶方法,精度只有前两项。,经过极短的时间dt,如果我们知道物体的受力,就可以求出物体的加速度,根据上面的计算,就可以求出x。,当前速度为v,时间为t,加速度为a,位置x,运动的距离为s。

2025-01-02 00:00:40 951

原创 【C++】模板使用总结

b : a;**模板函数的实例化:**使用具体类型代替模板参数。只要使用函数模板,编译器会自动进行实例化。// 使用int实例化// 使用float实例化// 实例化时,编译器会自动生成实例化的代码。比如使用int实例化会生成如下代码:b : a;// int支持a < b的调用注意:用于实例化模板的类型,必须支持模板函数的所有操作class A{}A a1, a2;// 编译报错:A不支持

2024-12-30 10:39:19 999

原创 【数据结构】二叉树

若高度为h的完全二叉树的节点数为n,则它和同样高度为h的满二叉树的前n个节点可以一一对应。这里我们将根节点的索引定为1,从上往下,从左往右,依次递增,最后一个节点的索引为n。将所有节点从上到下,从左到右的排序,顺序为两个子节点的节点,1个子节点的节点,0个子节点的节点,所以叶节点的开始索引为。二叉树是一种树形结构,一个节点最多有两个子节点,没有子节点的节点为叶节点,我们设二叉树的节点数为n。节点到其叶节点的最长简单路径中边的个数是节点的高度,树的高度为根节点的高度。,有1个子节点的节点的个数为n。

2024-04-01 16:28:34 1011

原创 vscode调试Unity

那么是vscode连接到Unity,Unity是服务端,vscode是客户端;所以,我们开始运行lua的时候,需要和vscode建立连接,建立连接的API在。现在使用vscode调试Unity的C#代码很简单,直接在vscode的EXTENSIONS里面搜索“Unity”,第一个就是,然后安装它,它会自动帮你安装上。字段,可以猜出emmylua和unity的连接是使用网络协议连接的,所以ide和debugger必定一个为服务单,一个为客户端。,无法成功附加,原因应该是你没有选择附加的Unity对象。

2024-03-29 15:54:06 3789

原创 【几何】平面方程

我们知道两个垂直向量的点乘为0,则平面的法线和平面上任意两点组成向量的点乘也为0。和上面一般式的求取过程是一样的,只不过得到的最后的表达方式不同。已知平面的法线和原点到平面的距离,求平面的方程。法线式和一般式几乎是一样的。= (A, B, C),平面上的任意一点为p。) ,现有任意一点p(x, y, z)。与xyz三个坐标轴的余弦值是多少呢?分别为平面与xyz轴的交点。为原点离平面的垂直距离。现在已知平面的一般式为。与xyz的夹角分别为。

2024-03-24 15:43:04 3154 1

原创 DOSBox+debug环境配置

DOSBox + debug.exe环境配置

2023-03-05 15:05:35 909

原创 [unity]使用EditorUtility.CopySerialized复制脚本时要注意脚本中对其他物体的引用

A和B互相引用,使用EditorUtility.CopySerialized复制后得到C和D后,C引用的是B,D引用的是A,这时C和D的引用需要重新指定。

2021-11-16 17:41:36 2949

原创 [unity]计算子节点到父节点的长度不能使用子节点的localPosition的长度来计算

子节点的localPosition受父节点的localRotation的影响。最好使用Vector3.Distance(parentPos - childPos),如果要使用localPosition去计算则要现将localPosition乘以父节点的Transform.lossyScale,而lossyScale比较消耗性能。childTrans.localPosition * parentTrans.lossyScale。...

2021-11-16 11:51:46 2486

原创 [Unity]不要使用Mathf.Max()求大于2个数的最大值

Mathf.Max()当传入大于3个数的参数时,调用的是Mathf.Max(params float[] values),这样会new一个数组,会有GC。

2021-11-15 21:13:39 2342

原创 unity调试package的源代码

我们通过Package Manager导入的包是无法调试源代码的,如果想要调试源代码,必须将包的文件夹手动复制到Assets同目录下的Packages文件夹中(不是编辑器中的,是文件资源管理器中的)。如果是一个新项目需要导入某个package,可以另外新开一个专门用来下包的项目,将需要的包下下来,包的文件夹保存在上图中的Library/PackageCache中。然后将包文件复制到新项目的Packages目录下;如果项目中已经通过Package Manager导入这个包了,需要先在Packa...

2021-06-28 23:06:45 1411 3

原创 《计算机组成原理》第一章 读书笔记

《计算机组成原理》 作者:娄国焕 刘晓悦 出版社:北京大学出版社冯·洛伊曼计算机体系结构的基本特点:1.计算机由运算器、控制器、存储器、输入设备和输出设备组成;2.采用存储程序的方式,程序和数据放在同一存储器中;3.数据以二进制码表示;4.指令由操作码和地址码组成;5.指令在存储器中按执行顺序存放;6.机器以运算器为中心(现代计算机以存储器为中心);存储器存储器是计算机中用于存放程序和数据的部件。存储器由存储单元组成,每个存储单元存储一个数据或一条指令,...

2020-11-06 18:12:43 346

原创 GLSL的in、out存储限制符使用错误

在GLSL中用in修饰的变量表示传入的数据,用out修饰的变量表示传出的数据,通过这样可以实现顶点着色器向片段着色器传递数据,但要注意这个变量的命名要相同,不相同的话,片段着色器是获取不到从顶点着色器传入的数据的。1.顶点着色器#version 330 corelayout (location = 0) in vec3 aPos;layout (location = 1) in vec3 aColor;layout (location = 2) in vec2 aTexCoord;out

2020-06-13 18:11:09 1148

原创 Opengl错误:“Error C5145: must write to gl_Position”

写opengl时,编译出现了这个错误,查了很久都没有找出问题,网上大部分说的是读取shader文件的时候出错了,或者将gl_Position拼错,或者是没有给gl_Position赋值。我检查我的代码都没有上面的问题,后来发现是API用错了。错误代码:vs = glCreateShader(GL_VERTEX_SHADER);glShaderSource(GL_VERTEX_SHADER, 1, &vsCode, NULL); // 错误用法glCompileShader(vs);

2020-06-10 21:52:00 5051

原创 读取3DMax的.obj文件,并优化顶点数据

数据结构struct vertex_t { float p[3]; float n[3]; float t[2];};struct mesh_t { vertex_t *vertices; unsigned short *indices; unsigned int vertexCnt, indexCnt; mesh_t(unsigned int vertex_count,...

2019-08-07 11:28:31 1357

原创 【c++】行为树

行为树节点接口enum STATUS{ STATUS_SLEEP, STATUS_RUNNING, STATUS_SUCCESS, STATUS_FAILURE,};enum TYPE{ TYPE_LEAF, TYPE_BRANCH,};class Node {public: std::string _name; // 节点的名字 int _Index[12...

2019-08-07 11:18:40 1783

原创 乘法如何突破位数限制

如果我们用int或double等进行乘法运算是有位数和精确度的限制,如何突破这种限制呢?当然只能自己写一个乘法运算。 如果我们用笔和纸进行乘法运算是没有位数和精确度限制的,那么我们是否可以模拟用笔和纸做乘法运算呢?在一定范围内是可以。首先我们可以肯定,一位数乘一位数是可以实现的,然后我们可以设置两个char数组a[n]和b[n]来个记录两个n位数,无论是小数还是整...

2019-04-21 16:08:56 395 2

原创 OpenGL鼠标移动方块

思路:用变量设定方块的坐标,然后根据鼠标的位移更改方块的变量坐标。注意:方块的绘图坐标系和世界坐标系是重合的,鼠标所在的坐标是以窗口的左上角为原点(0,0)的坐标系,窗口的左下角的世界坐标系为gluOrho2D(left, right, bottom, top)中的(left, bottom)。所以鼠标的坐标(xMouse, yMouse)转化为世界坐标(x, y)为: x = xMouse;...

2018-08-03 02:02:56 1649

原创 Breshenham画线算法及应用

Breshenham画线算法是由Bresenham提出的一种精确而有效的光栅线生成算法,该算法仅仅使用增量整数计算。原理:当斜率小于 1 时,x 增加 1, y 增加 0 或 1.因此只需要判断 y 是增加 0 或 1. 算法:画线段(x0, y0)到(xEnd,  yEnd), 线性方程 y = mx + b假设已经确定要显示的像素在(x_k, y_k), 那么下一步需要确定在列...

2018-05-16 22:40:43 2778

原创 非线性叠加算法

在游戏中,有许多属性的叠加是非线性的,这里以闪避为例子进行展开。单位目前的闪避为 a, 物品增加闪避 b, 单位得到物品的最终闪避为 c. (闪避的最大值为100%,这里用100来算,记为 limit)c = a + b* ( (limit - a)/ f(limit) ) | a&lt;limit, b&lt;limit, f(limit) &gt; limitf(limit)为叠加衰...

2018-04-24 11:44:16 4709

空空如也

空空如也

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

TA关注的人

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