基于高通AR SDK的Demo总结(一)——常规3D模型的行为脚本
来源:互联网 发布:2016淘宝女装店铺名字 编辑:程序博客网 时间:2024/06/10 03:13
下载高通AR SDK以及在Unity中的基本搭建不再阐述,具体给出dzyi大神的文章以便参阅:http://blog.csdn.net/dzyi_/article/details/22892641
这里主要是对将识别的3d人物模型做一定的脚本处理,使其具有一定的交互以及行为。
正文:
一、目的:
1、使模型具有自己的行为,让其一直重复一个个的动作;
2、点击人物模型头部时让其发出声音,并使其脸部有不同的变化;
二、模型资源处理:
1、在模型头部给予一个碰撞器,并调试成合适大小;
2、create一个animator controller,然后在annimator controller中添加一个parameter,其名为next的bool类型参数,然后将各个动作添加进来,然后translation条件为next值为true。这里的目的就是让模型能不停地发生动作;
3、将脸部动作的动画和声音文件都放在相应目录的新建的Resources文件夹下。
三、人物控制脚本(BehaviourController.cs):
using UnityEngine;using System.Collections;public class BehaviourController : MonoBehaviour{ private Animator animator; private AnimatorStateInfo currentAnimationState; private AnimatorStateInfo preAnimationState; public AnimationClip[] faceClips;//加载脸部动画片段 public string[] faceMotionName;//存储动画片段的序号 public AudioClip[] audioClips;//存储声音片段 public bool goNext = true; public float delayedTime = 8.0f; // Use this for initialization void Start() { initialize(); } // Update is called once per frame void Update() { GetTheMouse(); AnimatorActive(); } private void initialize() { animator = transform.GetComponent<Animator>(); currentAnimationState = animator.GetCurrentAnimatorStateInfo(0); preAnimationState = currentAnimationState; faceClips = Resources.LoadAll<AnimationClip>("FaceMotion"); audioClips = Resources.LoadAll<AudioClip>("AudioVoice"); faceMotionName = new string[faceClips.Length]; for (int i = 0; i < faceClips.Length; i++) { faceMotionName[i] = faceClips[i].name; } StartCoroutine(RundomChangeMotion());//延时播放动画 }private void AnimatorActive(){ if (animator.GetBool("Next")) { currentAnimationState = animator.GetCurrentAnimatorStateInfo(0); if (currentAnimationState.nameHash != preAnimationState.nameHash) { animator.SetBool("Next", false); preAnimationState = currentAnimationState; } }}private void GetTheMouse(){ if (Input.GetMouseButtonDown(0)) { RaycastHit hitInfo; if (Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition), out hitInfo, Mathf.Infinity)) { if (hitInfo.collider.tag == "face") { ChangeFaceMotion(); ChangeVoice(); } } }} private void ChangeVoice() { if (audio.isPlaying) { audio.Stop(); } int randomIndex = Random.Range(0, audioClips.Length); audio.clip = audioClips[randomIndex]; audio.Play(); } private void ChangeFaceMotion() { animator.SetLayerWeight(1, 1); int randomIndex = Random.Range(0, faceMotionName.Length); animator.CrossFade(faceMotionName[randomIndex], 0); } IEnumerator RundomChangeMotion() { while (true) { if (goNext) { animator.SetBool("Next", true); } yield return new WaitForSeconds(delayedTime); } }}
代码比较简单,只是稍稍实现人物运行和点击头部播放声音和脸部变化的简单功能。下面上传几个效果图,额,当然是图片。。懒得做动态图了。。。。
使用说明和APK在网盘,有兴趣可以下载试试求指教。
链接:http://pan.baidu.com/s/1c0nNT3i 密码:ktln
下篇写个异步加载吧,毕竟场景渲染的东西多了切换场景是会蛮卡的,这时候就需要异步加载了。
0 0
- 基于高通AR SDK的Demo总结(一)——常规3D模型的行为脚本
- 【转】基于高通AR SDK的Demo总结(二)——异步加载场景
- AR!!!高通Vuforia-iOS-SDK 和官方Demo 集成到iOS 项目中所需要注意的几点.
- 基于高德开放平台SDK的定位Demo
- Unity+高通Vuforia SDK——AR
- Unity+高通Vuforia SDK——AR播放视频
- Unity+高通Vuforia SDK——AR
- Unity+高通Vuforia SDK——AR播放视频
- Unity+高通Vuforia SDK——AR
- Unity+高通Vuforia SDK——AR
- 高通 AR SDK对模型进行控制(平移、旋转、缩放)
- 探讨增强现实(AR)基于模型的追踪技术
- AR—xcode开发3D模型单位问题
- 高通Vuforia SDK AR
- [ios版本]AR 现实增强之高通Vuforia QCAR SDK (一)
- (Android版)AR 现实增强 高通 Vuforia QCAR SDK学习笔记(一)
- (Android版)AR 现实增强 高通 Vuforia QCAR SDK学习笔记(一)
- 高通AR的使用
- 工厂方法模式Python版--雷锋依然在人间
- 现代经济感悟(4)-为什么一分钱一分货,两分货却要一块钱
- ABAP基础-数据更新至数据库操作解析
- 【好习惯】我的前端架构养成记之整洁的工作流
- Linux 环境开发--gcc 编译以及动态连接
- 基于高通AR SDK的Demo总结(一)——常规3D模型的行为脚本
- Objective-C基础——核心语法-点语法法和成员变量的作用域
- Pig简单入门
- 通过Eclipse对Android项目生成APK数字签名
- 不考虑溢出,写一个函数把一个字符串转换成整数(atoi)。
- 线性判别分析(Linear Discriminant Analysis)(二)
- 浅谈八皇后问题
- MindView 6.0 简体中文汉化包 最好的思维导图、甘特图软件
- Cocos2d-Phone 场景切换及动画效果