每天学习亿点点day 4: UE4 actor中life span, metahuman怎么玩, C++的类型安全
1. UE4 的Actor里面有一个life span的机制,设置为0的时候就会无限存在,如果大于0将会在一定时间后自动被UE4的destroy.
2. metahuman手机串流进行脸部 recording的时候使用Take Recoder或者Sequence Recorder 均可, 添加actor然后在录制状态下操作actor即可,这个也适用于VR stick的使用.
给metahuman加上liv link skeletal 的animation之后即使不在模拟状态下也能捕捉到面部表情
不加的话那么就只能在模拟或者运行状态下进行录制.
非常重要的一点是一定要先按下录制按钮然后再按下simulate键,结束时随意.
还有一件事,这个sequence录制下来的只有头部的动画, 事后需要使用的时候只需要在metahuman的face那部分添加animaion tack就可以了,很简单.
其余的关于如何连接live link到ue4查看官方教程即可.
3. 什么是类型安全
类型安全简单来说就是访问可以被授权访问的内存位置,类型安全的代码不会试图访问自己未被授权的内存区域。一方面,类型安全被用来形容编程语言,主要根据这门编程语言是否提供类型安全的保障机制;另一方面,类型安全也可以用来形容程序,根据这个程序是否隐含类型错误。类型安全的语言和程序之前,其实没有必然的联系。类型安全的语言,使用不当,也可能写出来类型不安全的程序;类型不安全的语言,使用得当,也可以写出非常安全的程序。
4. C的类型安全
C语言不是类型安全的语言,原因如下:
1)很多情况下,会存在类型隐式转换,比如bool自动转成int类型;
2)malloc函数返回的是void *的空类型指针,通常需要这样的显示类型转换char* pStr=(char*)malloc(100*sizeof(char)),类型匹配没有问题。但如果出现int* pInt=(int*)malloc(100*sizeof(char))这样的转换,可能会带来一些问题,但C并不会提示。
当然,在有些情况下表现还是类型安全的,当从一个结构体指针转换成另一个结构体指针时,编译器会报错,除非显式转换。
5. C++的类型安全
C++也不是类型安全的语言,但远比C更具类型安全。相比于C,提供了一些安全保障机制:
1)用操作符new来申请内存,严格与对象类型匹配,而malloc是void *;
2)函数参数为void *的可以改写成模板,模板支持运行时检查参数类型;
3)使用const代替define来定义常量,具有类型、作用域,而不是简单的文本替换;
4)使用inline代替define来定义函数,结合函数的重载,在类型安全的前提下可以支持多种类型,如果改写成模板,会更安全;
5)提供dynamic_cast使得转换过程更安全。
尽管如此,但如果使用空类型指针或者在两个不同类型指针间做强制转换,很可能引发类型不安全的问题。