笔记
文章平均质量分 87
弹吉他的小刘鸭
Happiness is nothing but self-building.
展开
-
Hands-on C++ Game Animation Programming阅读笔记(九)
Chapter 12: Blending between AnimationsThis fade is usually short—a quarter of a second or less. (动画之间的fade一般很快,0.5s甚至更短)本章重点:两个Pose的Blending不同Animations的CrossFading,会有一个cross fade controller来处理一个blend queueAdditive BlendingPose blending也没啥新东西,原创 2023-03-10 14:07:08 · 1368 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(八)
Chapter 11: Optimizing the Animation Pipeline本章的优化的几个思路:用更好的方法来实现skinning更高效的Sample Animation Clips回顾生成matrix palette的方式具体分为以下几个内容:Skin matrix的预处理把skin pallete存到texture里更快的SamplingThe Pose palette generation探讨Pose::GetGlobalTransform函数Skin原创 2021-12-23 19:48:48 · 2533 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(七)
Chapter 10: Mesh SkinningDeforming a mesh to match an animated pose is called skinning.Mesh Skinning是基于Animation Pose,改变Mesh去匹配Pose的过程,可以通过Shader进行GPU Skinning,也可以用CPU进行C++这边的Skinning,我以前还写过一篇文章比较它俩的特点。本章重点:skinned mesh与non-skinned mesh的区别了解整个skinn原创 2021-12-08 20:28:01 · 1000 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(六)
Chapter 9: Implementing Animation ClipsAn animation clip is a collection of the TransformTrack objects. An animation clip animates a collection of transformsover time and the collection of transforms that is animated is called a pose. Think of a pose as原创 2021-11-26 18:18:24 · 1195 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(五)
Chapter 7: Exploring the glTF File FormatglTF is a standard format that can store both mesh and animation data. a file format that contains everything you need to display animated models. It’s a standard format that most three-dimensional content creatio原创 2021-11-21 22:57:53 · 1776 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(四)
Chapter 5: Implementing TransformsIn this chapter, you will implement a structure that holds position, rotation, and scale data. This structure is a transform. A transform maps from one space to another space.这里有个疑问,为什么不用4*4矩阵来记录rotation、position和scale原创 2021-10-28 13:39:23 · 1798 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(三)
Chapter 4: Implementing Quaternions其实很多人物的动画里,只有rotation,没有平移或者scale上的变化。Most humanoid animations are created using only rotations—no translation or scale is needed. Think about an elbow joint, for example. The natural motion of an elbow only rotates. I原创 2021-10-26 00:17:04 · 1416 阅读 · 0 评论 -
Hands-on C++ Game Animation Programming阅读笔记(二)
#Chapter 2: Implementing Vectors详细的可以参考这里重点在以下部分:Understanding component-wise operationsUnderstanding non-component-wise operationsvector的插值和比较大小##简单Vector介绍A vector is an n-tuple of numbers.##创建Vector类这里使用struct来创建,代码如下:// 放在新创建的vec3.h头文件里#原创 2021-10-23 12:39:13 · 620 阅读 · 1 评论 -
Hands-on C++ Game Animation Programming阅读笔记(一)
Chapter 1: Creating a Game Window这节课主要是创建Windows窗口,设置OpenGL的Context,具体分为:Open a Win32 windowCreate and bind an OpenGL 3.3 Core contextUse glad to load OpenGL 3.3 Core functionsEnable vsynch for the created windowUnderstand the downloadable samples f原创 2021-10-22 12:48:35 · 856 阅读 · 2 评论 -
.NET Book Zero 读书笔记(三)(从C++的使用者角度学习C#)
InterfacesInterface看起来像是Class或者Struct,但是里面的method都没有body,比如:// Interfaces are entirely overhead! They contain no code.public interface IComparable{ int CompareTo(object obj);}.NET Framework里的接口都是I开头的,但是这也只是一种命名习惯,Interfaces里也可以有Property,因为Property其原创 2021-09-05 01:25:56 · 497 阅读 · 0 评论 -
.NET Book Zero 读书笔记(二)(从C++的使用者角度学习C#)
Methods and FieldsC#里把函数叫做method,所有的C#程序都需要有一个叫做Main的method。在类里定义、但是又不在类内函数里定义的变量叫做field。跟C++一样,函数的前面也有传值和传引用的方式,对于struct类型,写法如下:// 这是两个函数static void AlterInteger(int i){}static void AlterInteger(ref int i){}static void main(){ int i = 22; Al原创 2021-07-28 00:03:57 · 594 阅读 · 0 评论 -
浮点数与定点数
计算机中的浮点数表示计算机中的float类型,有一篇文章写的很好,这里把它的一部分放过来:https://www.duote.com/tech/cyuyan/14691.html根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式: V = (-1)s×M×2E (1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。 (2)M表示有效数字,大于等于1,小于2。 (3)2^E表示指数位。举例来说,十进制的5.0,写成二进制是101.0,相当于1.01×原创 2020-05-28 19:58:23 · 874 阅读 · 0 评论 -
命令行使用Cmake
今天工作需要去MacOS上打包.a文件,使用到了MacOs上的Cmake软件,其中还用到了Cmake的工具链,学到了一些东西,在此记录一下:cmake command not found首先是在MacOs下,因为我是安装的CmakeGUI,直接运行Cmake会提示command not found, 所以我每次需要手动把path加到环境变量里:先打开Cmake GUI的这个:在终端运行...原创 2019-12-19 14:13:31 · 1926 阅读 · 0 评论 -
操作系统学习(三)(B站视频)
1. 关于死锁,有四种预防等级,从高到低是,死锁预防,死锁避免,死锁检测和死锁恢复,所以银行家算法属于哪一类?怎么实现寻找安全序列进程的算法和银行家算法?1.银行家算法属于死锁避免的算法,银行家算法其实不难,在设计了寻找安全进程序列的算法的基础上,对于每一个发出资源申请的进程,在剩余资源满足要求资源的情况下,假定给他资源,若剩下的资源和剩下的进程能组成安全序列,则给它资源(给予贷款),若给...原创 2019-12-03 10:37:41 · 220 阅读 · 0 评论 -
Unity如何在鼠标悬停到某处的时候,显示相应的说明
目前主要是用于编辑器界面下,对于Inspector里的变量,可以这么写:using UnityEngine;public class Example : MonoBehaviour{ [Tooltip("Health value between 0 and 100.")] int health = 0;}在Inspector里面是这样的:如果在UnityEdito...原创 2019-12-03 10:34:29 · 4211 阅读 · 0 评论 -
Unity使用Animator.CrossFade后,脚本的OnExitState函数还执行吗
问题可以细化为两种Animator.CrossFade到别的动画Animator.CrossFade到自身动画,从而实现重新播放该动画为了确认这个问题的答案,我做了一个简单的测试,Idle为正常状态,Hit为角色的挨打动画当我按下T键时,会播放Hit动画:public class Test : MonoBehaviour{ private Animator animato...原创 2019-11-30 20:13:17 · 3778 阅读 · 1 评论 -
Vector.SmoothDamp用于旋转时报错
用Unity,需要实现把模型A的朝向forward调整到其背后的朝向,也就是实现人物的转身效果,但是我发现当角度为180°时,Vector3.SmoothDamp用不了。比如说要把人物的朝向从(0,1,0)改为(0,-1,0)如果我这么写,没用:public class Test : MonoBehaviour{ Vector3 damp = Vector3.zero; V...原创 2019-11-29 15:59:27 · 383 阅读 · 0 评论 -
Unity关于场景scene的一些函数操作
Unity提供了EditorSceneManager和SceneManager两个类,以下列举一些常用情况,以供参考:新建场景,并保存场景 Scene navScene = EditorSceneManager.NewScene(NewSceneSetup.EmptyScene, NewSceneMode.Additive) EditorSceneManage...原创 2019-11-12 17:03:24 · 1391 阅读 · 0 评论 -
Unable to lookup library path for native render plugin support disabled
今天打包安卓,在连接ADB的console面板上看到这样的报错:查资料以后发现可能是Unity2018年版本以前会出现的Log,跟打包平台的架构有关网上有人说重新导入Unity的plugin文件夹,就可以解决,不过我并没有尝试过。最后发现这条指令好像并没有什么作用,出现这条指令,打包后的apk照样能正常运行,所以以后看到这样的错误,可以先把它忽略掉...原创 2019-10-30 20:40:30 · 1285 阅读 · 0 评论 -
Unity打包安卓报错
错误信息如下:CommandInvokationFailure: Unable to install APK to device. Please make sure the Android SDK is installed and is properly configured in the editor原因是手机上已经有了对应的app了,把手机上的卸载掉,在build&run就行...原创 2019-10-25 18:38:11 · 1446 阅读 · 1 评论 -
UnityEngine.UnityException: get_gameObject can only be called from the main thread.
今天发现代码走到一个for循环里面,出不来了: Debug.Log(piece.index); Debug.Log(piece.visible); GameManager.instance.ChangePieceVisibleStatus(piece.index, piece.visible); Debug.Log(piece.index + "初始化完成");界面只出...原创 2019-10-15 17:07:09 · 5095 阅读 · 0 评论 -
Unity中的Mesh和MeshFilter的区别
首先明确一点,Mesh是一个类,MeshRenderer和MeshFilter都可以作为组件,挂载到GameObject上面,但是Mesh不可以。Mesh: 译作 网格,是一个数据结构,记载了组成一个GameObject的所有三角形面。MeshFilter: 译作 网格过滤器,记载着物体对应的所有Mesh的引用,当渲染GameObject时,通过MeshFilter获取其对应的Mesh。Me...原创 2019-10-12 17:50:43 · 3221 阅读 · 1 评论 -
利用Strategy Pattern(策略模式)替换switch case
参考文档:http://blogs.microsoft.co.il/gilf/2009/11/22/applying-strategy-pattern-instead-of-using-switch-statements/用switch case的缺点:代码臃杂,经常一个case能写很多行,代码不易阅读每次在使用switch case语句的时候,都应该考虑,能不能使用策略模式替代switc...原创 2019-10-11 15:59:24 · 2291 阅读 · 0 评论 -
OpenGL 配置环境的一些坑
坑一:glew库无法使用无法解析的外部符号 __imp__glewInit@0,该符号在函数 _main 中被引用无法解析的外部符号 __imp____glewBindBuffer我是用的glew32s.lib 用的应该是静态库,所以要在Opengl文件的最上面加上:#define GLEW_STATIC坑二:glewInit失败我之前写的是if(!glewInit()){...原创 2019-08-14 10:36:28 · 655 阅读 · 0 评论 -
glGetShaderiv()函数有什么用?
部分内容转载自https://blog.csdn.net/flycatdeng/article/details/82667207今天学LearnOpenGL的时候看到了这个函数,因为最终的图像有误,但是不知道具体哪里出错,发现glGetShaderiv()函数可以用来检测着色器编译是否成功。名称glGetShaderiv - 从着色器对象返回一个参数C规范void glGetShade...原创 2019-01-08 15:20:34 · 5662 阅读 · 0 评论 -
OpenGL笔记(五)
1.下列代码是同时用两组VBO和VAO进行绘制,这里是设置界面,一个VAO挖一个VBO的数据,挖完存储起来,再挖下一组VBO。 unsigned int VBO[2],VAO[2]; glGenBuffers(2, VBO); glGenVertexArrays(2, VAO); glBindBuffer(GL_ARRAY_BUFFER, VBO[0]); glBufferDa...原创 2019-09-25 18:50:00 · 397 阅读 · 0 评论 -
Unity如何在Instantiate的时候,不改变原prefab默认的方向
prefab里面设置好了旋转角度,但是每次Instantiate之后,可能会发生改变。解决办法有两种:(1)创建一个空物体,把prefab拖到里面,旋转好对应的角度,再整体作为一个新的prefab。(2)这样写Instantiate函数:Instantiate (myPrefab, new Vector3 (x ,y, z), myPrefab.transform.rotation);...原创 2019-09-17 19:24:20 · 2721 阅读 · 0 评论 -
操作系统学习(一)(B站视频)
1. OS如何从启动的?2. OS的三个interface,分别通过什么实现的?3. 中断、系统调用和异常分别是什么意思?4. OS 的三种接口有何区别?答案1.电源开启后,BIOS进行自检(对电脑进行初始化检查),由BIOS(Basic I/O System)调用bootLoader来把操作系统从disk 调用到内存当中。BootLoader是用来加载OS的, 一般放在硬盘的第...原创 2019-05-24 20:09:08 · 1455 阅读 · 0 评论 -
函数glfwSwapBuffers有什么用?
小白日常笔记,如有错误欢迎批评指正~glfwSwapBuffers(GLFWwindow *window)SwapBuffers翻译过来是交换缓冲区的意思,既然buffer加了s,也就意味着不止一个buffer,所以这里涉及到了一个双缓冲的概念.关于双缓冲英文解释如下:Double Buffer:When an application draws in a single buffer ...原创 2019-01-06 08:50:58 · 5520 阅读 · 0 评论 -
不要随便使用 using namespace std
今天写了这么个小程序报错#include "stdafx.h"#include<iostream>using namespace std;int count = 0;int main(){ for (int i = 0; i < 10; i++) { static int number = 0; for (i...原创 2018-08-24 18:17:21 · 904 阅读 · 1 评论 -
C++笔记问题整理(二)-------设计模式
总结一下遇到的问题,和可能遇到的面试题目。 1.什么是设计模式?2.什么是单例模式?3.在单例模式中,什么是懒汉模式,什么是饿汉模式,二者有什么区别?4.在单例模式中,不考虑多线程的情况下,如何保证一个类只创建一个实例,除了这一种,还有哪种方法能禁止类生成对象?5.用C++代码分别写出懒汉模式、饿汉模式和加锁后的单例模式代码?6.什么是工厂模式?1.什么是设计模式? ...原创 2018-08-20 20:07:32 · 156 阅读 · 0 评论 -
C++笔记和面试问题整理(一)-------STL与泛型编程
关于顺序容器和关联容器,有些东西不写容易忘,在此加强一下: (1)vectora,假设a有5个元素,现在要删除第二个元素怎么写?在第一个元素和第二个元素之间插入一个3呢? (2)在使用顺序容器的时候,能用vector尽量用vector,需要注意的是,vector容器并不适合多次删除或增加中间元素,vector只适合频繁在尾部增/删元素,如果非要在中间元素添加,有哪两种解决办法? (3)C++...原创 2018-08-16 17:12:41 · 882 阅读 · 0 评论 -
操作系统学习(二)(B站视频)
2019.5.25页面置换算法当内存中产生缺页中断时,如果内存中已有空闲空间,则可以直接进行选取,调用之后,更改页表。若无空间,则需要调出某些页面,然后把该页调入其中,所以,具体调出哪些页面,涉及到了相关的调度算法。1. 页面调度算法有哪几种?答案1.最优页面调度算法...原创 2019-06-13 13:02:10 · 337 阅读 · 0 评论 -
傅老师黑暗之魂复刻笔记(第一季第一部分)
2019.3.161.在Unity中通过一维混合树实现人物静止与跑动之间的动态切换,可以通过一维的参数混合两个动画,forward值为0时静止,1时完全走动:原创 2019-06-15 14:12:47 · 1183 阅读 · 0 评论 -
Unity自带的Ui outline不好用该怎么办
在Text组件里面给文字添加outline的时候,在text组件栏点击add component ,添加outline组件后,发现添加的轮廓仔细看是半透明的,有时候还显示不完整,为了解决这个问题,需要用脚本控制实现文字的outline。解决方案:https://www.bilibili.com/video/av49322745/?p=2从七分钟左右开始看。...原创 2019-07-11 12:38:28 · 2123 阅读 · 0 评论 -
C#中的IEnumerable和IEnumerator
1. 看到有这么写的,没懂是什么意思: public class BinaryHeap<T> : IEnumerable<T> where T : IComparable <T> { private List<T> mHeap; ..... }具体不是很清楚,总之是为了让数据结构支持foreach操...原创 2019-09-10 12:34:46 · 524 阅读 · 0 评论 -
C++的offsetof函数用法
1. C++内置的offsetof函数,能自动返回结构对象中,某变量距离结构体对象首地址的偏移值:offsetof(s, m);它的第一个参数是一个结构体,第二个参数是这个结构体中变量的名字。这个宏会返回那个变量距结构体头部的字节偏移量(Byte Offset)。这正好可以用在定义再举个例子:有结构体:struct Vertex{ glm::vec3 position; glm:...原创 2019-09-10 12:33:18 · 6015 阅读 · 1 评论 -
C++ 输出当前exe所在的文件路径
1. C++的main函数自带的两个参数还记得吗?int main(int argc,char * argv[]);//int main(int argc,char ** argv); //也可以这么写 是一样的可以试着输出argv[0],发现输出的是当前exe的完整运行路径。配合下述语句,可以获得exe对应的Debug文件夹对应的路径int main(int argc,char *...原创 2019-09-07 10:44:51 · 1166 阅读 · 0 评论 -
RecastNavigation中solomesh和tilemesh的区别
看了一下网上说的:Solo Mesh,纯粹的邻接凸多边形集合Tile Mesh,基于tile划分的N个邻接凸多边形集合Temp Obstacles,支持动态障碍物的,基于tile划分的N个邻接凸多边形集合看完了感觉这个基于tile划分的概念,不是很清楚。看到网上的一个回答:Solo mesh builds one big mesh. Tile mesh builds it up o...原创 2019-08-20 14:57:47 · 2613 阅读 · 0 评论 -
Unity 射线检测中的LayerMask
mask翻译过来:遮罩Unity中有32个Layer,LayerMask,这个参数,是用来决定,这32层中,哪些层需要检测,哪些层不与光线进行检测,代码示例如下:LayerMask mask1 = 1 << 5; //只检测第五层LayerMask mask2 = ~(1 << 7); //除了第七层都检测LayerMask mask3 = (1 <...原创 2019-08-13 18:33:09 · 511 阅读 · 0 评论