1、默认的UE4会以AGameMode中设置DefaultPawnClass对象中摄影机作为默认摄影机。有时候我们想要一个全局的摄影机对场景进行观察,这就需要重新创建一个摄影机,并在这两个摄影机直接切换。下面看下UE4中如何实现切换默认Camera。
2、在APlayerController类中,有一个SetViewTarget方法,参数是一个AActor指针,就是实现此功能的。因为参数必须是AActor,即必须是AActor中包含的Camera组件才有效,所有,先创建一个AActor对象。
3、ChangeViewTarget()方法提供给Blueprint调用,用于在Character的Camera和FreeCamera之间切换。
4、其次在源文件CamData.cpp加入UTexture2D* UCamData::VideoTexture(){UsbCamera >> frame;UTexture2D* TextureRed = NULL;for (int x = 0; x<VideoFrameSize.X; x++)// 640{for (int y = 0; y<VideoFrameSize.Y; y++)// 480{int i = x + (y * VideoFrameSize.X);Data[i] = FColor(frame.data[i * 3 + 2],frame.data[i * 3 + 1],frame.data[i * 3 + 0],255);}}TextureRed = UTexture2D::CreateTransient((int32)VideoFrameSize.X,(int32)VideoFrameSize.Y, PF_B8G8R8A8); //创建纹理void* TextureData = TextureRed->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE); //锁定纹理FMemory::Memcpy(TextureData, Data.GetData(), Data.Num());TextureRed->PlatformData->Mips[0].BulkData.Unlock(); //解锁纹理TextureRed->UpdateResource(); //更新纹理
5、在Editor中创建一个从AFreeCameraActor继承的Actor,并拖放到场景中去。可以看到一个包含了摄影机的对象。然后编辑Level Blueprint,加入脚本代码
6、好了,以上就是小编今天带给大家的文章,希望对各位网友有所帮助。