当前位置: 首页 > news >正文

maya建模与骨骼动画快速实现人工鱼

背景

这个月学校举办人工鱼大赛,简单的说就是通过编程实现一或多条鱼的形态、行为、动作、习性等仿真。

▼涂晓媛的人工鱼概念图
clipboard.png

听了讲座后感觉这个课题可以从上述四方面入手。
在形态中的例子:鱼叶海马的游动;六斑刺鲀的膨胀。
在行为中的例子:沙丁鱼群游动;鱼游动避障;鲤鱼跃龙门行为。
在习性中的例子:交配,产卵,珊瑚小丑鱼协作环境。

上半段特地撇开智能二字,因为不是说智能就能智能得起来的,背后算法的支持必不可少,本文最后会根据老师资料整理出真正的人工智能鱼模块实现算法与思路。

Maya大法好

由于力求简单快速实现,只要求Maya快速入门。分两步走,1.动画 2.建模。

1.动画

动画比较重要,之后建模直接上图。在动画中我们只考虑两个因素,一个适宜的前进,另一个是鱼的身体摆动。

1.1鱼的身体摆动
如图,通过Maya绑定骨骼,从鱼头到尾部,总共应该有4到5个节点。
通过三角函数,形如f(x)=a*sin(x)+b,延伸至其他几个节点,通过调整a控制摆动幅度,b控制横向摆动位移,整条鱼的摆动类似于汉明窗在三角函数的立体空间推移。如下图
▼简陋的鱼外形配上骨骼
图片描述

1.2适宜的前进
观察行为有很多情况,如:
转向:身体横向位移减少,前进速度几乎不变。
前后翻转:翻转后快速前进一段距离后速度恢复。
平衡:没有摆动,在空间内缓慢位移。

▼一条没贴图的热带鱼
图片描述

2.建模

简而言之,拖个球体,经纬度条数多一点,然后慢慢捏就行啦。

▼感觉自己萌萌哒
图片描述

最终成果

▼没有贴图,凑合着看吧
图片描述

真人工智能鱼模型思路资料汇总

整理自《人工智能鱼典型模型与算法》,感觉这才是重点,以后可以参考学习一下。

1.感知模型
1.1 基于BP神经网络的视觉感受器模型
1.2 基于模糊推理的人工鱼嗅觉感知模型
1.3 基于模糊神经网络的人工鱼味觉感知模型
2.认知模型
2.1 预定义生理发育认知模型
2.2 预定义精神状态(摄食欲望/交配欲望/恐惧感)认知模型
2.3 预定义产卵认知模型
2.4 预定义环境选择认知模型
2.5 随意性行为(情景树|自繁衍行为)
3.行为模型
3.1 个体
3.2 群体
4 其他
形态外观模型(nurbs曲面)
生物力学(质点-弹簧-阻尼)
肌肉肉与水动力学
数字仿真(游动|左转|右转|滑行|上浮|下浮|平衡|制动|后退) 海底虚拟环境模拟 ...

参考资料

《人工鱼-计算机动画的人工生命方法》涂晓媛

《maya白金手册》5册一套

相关文章:

  • C#break和continue学习
  • jmeter(十)参数化
  • 用9种办法解决 for 循环取 i
  • 微信小程序无埋点数据采集方案
  • 一次Linux服务器***查杀经历
  • JS编程建议——71:推荐分支函数
  • 第五十四课、被遗弃的多重继承(下)
  • 拖拽div大小
  • 4xx错误的本质:服务器已经接收到请求
  • sql server 查询表结构
  • Swift 中异常抛出和四种异常处理
  • JDK Tools and Utilities---Java Troubleshooting, Profiling, Monitoring and Management Tools
  • Sagit.Framework For IOS 开发框架入门开发教程2:一行代码实现引导页
  • 简单实现UIlabel可复制功能
  • 大数据学习系列之五 ----- Hive整合HBase图文详解
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • JDK 6和JDK 7中的substring()方法
  • js算法-归并排序(merge_sort)
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Map集合、散列表、红黑树介绍
  • Meteor的表单提交:Form
  • ReactNative开发常用的三方模块
  • 猫头鹰的深夜翻译:Java 2D Graphics, 简单的仿射变换
  • 试着探索高并发下的系统架构面貌
  • 项目实战-Api的解决方案
  • 找一份好的前端工作,起点很重要
  • media数据库操作,可以进行增删改查,实现回收站,隐私照片功能 SharedPreferences存储地址:
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​LeetCode解法汇总2696. 删除子串后的字符串最小长度
  • ​linux启动进程的方式
  • ​草莓熊python turtle绘图代码(玫瑰花版)附源代码
  • #mysql 8.0 踩坑日记
  • #大学#套接字
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (附源码)python房屋租赁管理系统 毕业设计 745613
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm考试题库管理系统 毕业设计 069043
  • (转)大型网站架构演变和知识体系
  • (转载)从 Java 代码到 Java 堆
  • ***汇编语言 实验16 编写包含多个功能子程序的中断例程
  • .mkp勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .Net FrameWork总结
  • .NET 使用 ILMerge 合并多个程序集,避免引入额外的依赖
  • .Net各种迷惑命名解释
  • .NET命令行(CLI)常用命令
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @EnableAsync和@Async开始异步任务支持
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @JoinTable会自动删除关联表的数据
  • [android学习笔记]学习jni编程
  • [ARC066F]Contest with Drinks Hard
  • [BZOJ1008][HNOI2008]越狱
  • [C#]winform部署PaddleOCRV3推理模型
  • [Docker]六.Docker自动部署nodejs以及golang项目