每天学习亿点点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使得转换过程更安全。

尽管如此,但如果使用空类型指针或者在两个不同类型指针间做强制转换,很可能引发类型不安全的问题。

 

posted @ 2021-05-22 13:35  Tonarinototoro  阅读(235)  评论(0编辑  收藏  举报