一、AR系统进度
1.核心功能实现:
图像识别: 使用Vuforia引擎实现,可识别多个预设ImageTarget,并触发对应的不同响应内容。
识别反馈联动:
成功识别ImageTarget后,自动显示关联的3D人物模型。
模型显示时自动播放其绑定的人物动画。
模型显示时自动播放关联的音效。
模型渲染与视觉效果:
使用自定义Shader对3D人物模型进行渲染。
渲染结果包含可见的阴影效果。
阴影效果与模型动作保持实时联动。
2.交互功能实现
触摸手势操作 (基于EasyTouch):
用户可通过单指触摸滑动实现3D模型的旋转操作。
用户可通过双指捏合手势实现3D模型的缩放操作。
当前测试重点 (Android真机)
本地TTS语音合成功能能否正常播放读取的文字内容。
截屏交互功能能否正常触发,以及截取的屏幕图像能否成功保存到设备的系统相册。
使用Flutter集成UnityAR开发问题解决
使用插件flutter-unity-view-widget
该插件版本更新停止在2022年,故无法适配最新的flutter版本,尝试了flutter3.27.4,报错:是在插件flutter_unity_widget中,试null值强制转换为Context类型,结果失败崩溃。Flutter 最新版本中 PlatformViewFactory.create() 提供的是 @Nullable 的 Context context,如果直接用 context!! 或 context as Context 就会崩。
最好使用版本:
Flutter版本:3.3.10
Android studio版本:2021.3.1
Unity版本:2022.3.53
Android 构建过程在处理资源文件时失败
修改compileSdkVersion,但是要注意compileSdkVersion不能比targetSdkVersion版本低,同步修改
闪退问题
构建并安装flutterAPP后,打开可以看到想要唤起unity窗口但是失败了,根据信息显示为Unity 模块在 Android 设备上初始化 Vulkan 图形接口时崩溃
直接禁用 Vulkan,使用 OpenGLES
在 Unity 中打开 Project Settings > Player > Android > Other Settings > Graphics APIs:
把 Vulkan 从列表中移除,确保只有 OpenGLES
Unity AR模型显示阴影
在默认的摄像头画面中,AR 模型没有阴影,导致其与真实的世界脱节,缺乏沉浸感。
解决办法:创建一个透明平面来接受影子,阴影要写一个shader来实现。
阴影外形怪异,有的甚至没有模型。
解决办法:首先Light选为软阴影soft shadow,.然后在Unity菜单栏依次选择 Edit ->Project Settings,打开Project Settings对话框,选择Quality选项卡,设置Shadow Projection为Close Fit。Quality选项卡里还要将安卓更换为ultra。最终呈现比较正常的阴影效果
二、语音聊天系统进度
NLP快速原型测试
短时间内实现了文本对话,模型使用 DeepSeek-V3-0324,具体api和模型的对应可见首次调用 API | DeepSeek API Docs
主要参考了Penny Lu的这篇文章【菜菜丸的菜鸟教程】Unity接入DeepSeek实现AI对话功能 - 技术专栏 - Unity官方开发者社区
SALSA lipSync使用实践
SALSA不是对口型的精准模拟,而是通过听声对口型的取巧模拟,想要取得好的效果,关键是配置一系列逐渐变大,但是动态不同的口型,
SALSA的配置,结合官方文档,根据示例Scene的Component做一遍,取得还不错的效果
三、其它进度
完成了一组登录登出UI的设计,以及应用启动动画。接下来接轨前端后端,进行测试。
如图,最右侧为渐变启动动画,左侧为登录界面,中间是表单