这篇博客介绍了Metaball对应的逻辑,以及我相关的思考。


背景

在游戏《孢子》中,由于游戏要处理的是完全不可预测的,由玩家决定的Skeleton Mesh,因此当玩家改动或增减了躯干时,需要实时重新生成对应的蒙皮信息。因此在《孢子》中使用了Blobby implicit surface(一般也被称为Metaball)来表示蒙皮信息。

Metaball的介绍

考虑场函数 D(r)=1r2 D(r) = \frac{1}{r^2}和在3D空间中的一系列控制点。其中 r r指的是三维空间中的某一个点到控制点的距离,而在场中对应的强度则可以认为是这一系列控制点所产生的场强度的总和。

那么这样一来,我们预先设定一个强度,并且绘制出三维空间中的等势面,这个等势面就是一个Metaball。

如下图,可以看出来针对于Metaball来说,当他们相互靠近时,对应的那些顶点会被彼此的控制点影响。

当控制的图元不再是点,而是一条线段或者一个平面时,那么rr通常取空间中的点到这条线段或者平面上的最短距离,例如下图就是不同场强度的Metaball。

对于线段的控制图元来说,一个可能出现的问题在于交界处的融汇。如果只是简单粗暴实现,有可能导致在两根线段交汇处出现鼓起的情况,例如下图的最下面的情况:

有些时候,这种鼓起来的状况并非开发者所期待的,开发者更期待的可能是两条线平滑融合……这种情况可以使用各种不同的Blending Function来解决。

Metaball的实现

Metaball在项目中的实现往往要考虑性能的开销。场函数往往是可以延伸到无限远处的地方,但这样会导致计算量的快速增长。

因此,可以考虑将在一段距离之后,将对应的场强直接设定为0。这样一来,就可以节省一些计算量了。

因此Metaball的公式可以设定为:

f(r)=⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪

游戏《孢子》的思考 —— Metaball的逻辑,实现及对应思考相关推荐

  1. 使用简单的逻辑方法进行独立思考

    使用简单的逻辑方法进行独立思考 这是一个非常复杂的世界,这个世界上有很多各式各样的观点和思维方式,作为一个程序员的我,也会有程序员的思维方式,程序员的思维方式更接近数学的思维方式,数学的思维方式让可以 ...

  2. 整除判断游戏能显著提高小朋友的逻辑思维能力,问题要求如下:• 能同时被 3、5、7 整除• 能同时被 3、5 整除• 能同时被 3、7 整除• 能同时被 5、7 整除• 只能被 3、5、7

    static void Main(string[] args){Console.WriteLine("请输入一个整数");int n = int.Parse(Console.Rea ...

  3. 数学物理方程逻辑梳理和有关思考

    数学物理方程逻辑梳理和有关思考 数理方程在做什么? 解方程,分为三类,以及齐次与不齐次的情况 振动时的位移:utt=a2Δu热传导的温度:ut=a2Δu稳定温度场,电场电位,浓度分布等:Δu=0振动时 ...

  4. 游戏开发入门(四)逻辑与脚本开发

    视频链接:游戏开发入门(四)逻辑与脚本开发(8节课 时常:约2小时30分钟 第4节看不了) 笔记与总结(请先学习视频内容): 1.逻辑系统目的 实现策划的设计文档 构建游戏玩法 实现程序与玩家交互 2 ...

  5. 思考1:为什么大多数人喜欢做重复性工作,而不是思考用更简单的方法或者思考按自己的思路解决问题。

    我想大概有两个原因: 1. 高效. 别人都做好的东西,我为什么还要花时间去研究?直接拿来用多好.站在巨人的肩膀上,走的更快. 2. 懒于思考. 如:3个人堆积木,其中一个人提前了10分钟就开始堆了,所 ...

  6. 读书笔记与思考(一)《MIT深度思考法》

    何为思考呢?是基于一定阅历及对应知识体系下进行的推理与论证? 思考可以天马行空,放飞自我,犹如脱缰野马.思考也可以步步为营,娓娓而来,有若高楼拔地而起.对于复杂的问题,思考的过程犹如解答一道数学逻辑证 ...

  7. [思维模式-8]:《如何系统思考》-4- 认识篇 - 什么是系统思考?系统思考的特征?系统思考的思维转变。

    目录 第1章 系统思考概述 1.1 什么是系统思考 1.2 系统思考适合解决什么样的问题?解决复杂问题的有效利器! 1.3 思维模式的转换:还原论向整体论(西医向中医) 第2章 系统思考的四项特征 2 ...

  8. [思维模式-6]:《如何系统思考》-2- 认识篇 - 为什么要系统思考?系统思考是系统架构师、系统设计师的基本技能

    目录 前言:系统思考的关键字 第1章 系统思考的作用 1.1 系统思考能够化繁为简 1.2 系统思考是敏捷成长和解决问题的系统方法 第2章 常见缺乏系统思考的表现 2.1 分解思维盛行的不足 2.2 ...

  9. 游戏服务器中多人交互逻辑业务的思考

    背景:在mmo中有非常多的多人交互逻辑,比如:工会中帮主同时同意N个人加入帮派,此时,要检查所有人是否加入了帮派,如果没加入,则让它加入,但是有可能这一批人同时也申请了别的帮派,别的帮派的帮主也在做这 ...

  10. 关于游戏陪玩系统源码后台管理系统前端项目的思考

    开发游戏陪玩系统源码后台管理系统是大部分游戏陪玩系统源码前端开发人员接触过的项目,如何更好的进行项目的搭建.组件的开发.数据结构的设计等等,这些都是需要考虑的问题.以下是我结合一些项目的经历和其他大佬 ...

最新文章

  1. 用 Dubbo 传输文件?被老板一顿揍
  2. 设计模式——原型模式(Prototype Pattern)
  3. 学习笔记-Redis设计与实现-跳跃表
  4. 常见的几种异常类型 Exception
  5. 32和64位系统各内置类型所占字节大小(int char long double 指针等)
  6. 莫名其妙的主机名 VM_32_234_centos
  7. 函数模板(参考《C++ Templates 英文版第二版》)
  8. 【二分】【线段树】hdu6070 Dirt Ratio
  9. PHP和Java的主要区别有哪些呢?
  10. 数据库系统概论(第五版) 王珊 第一章课后习题答案
  11. 【ORB_SLAM3源码解读】IMU基础介绍、IMU姿态、速度、位置解算以及误差方程、坐标系
  12. UNI-APP前后端实战课《悦读》
  13. 专科三年的教训,写给自己,也给正在学习路上的你
  14. matplotlib生成没有留白的图片
  15. String类型——字符串
  16. 亿级流量电商详情页系统实战-25.亿级流量商品详情页的多级缓存架构介绍
  17. 牛客面试题HTML与CSS部分
  18. IT码农哥放弃50万年薪:辞职卖咖喱凉皮(背后深藏功与名)_互联网的一些事...
  19. 《设备管理系统》设计文档【Java+Eclipse】
  20. EDID1.3 数据格式

热门文章

  1. 从零开始掌握Python机器学习:十四步教程 - 知乎专栏
  2. vue+echart实现3d地图可拖拽、缩放、区域填充颜色(geo3D)
  3. C语言求100到500的所有质数,每10个数字一行打印
  4. Java找不到目标文件_java-找不到目标设备android studio 2.1.1
  5. requests对接三要素实名认证接口
  6. 分享3款好用的电脑屏幕监控软件!
  7. I Took The SAT Again After 41 Years
  8. 《行情涨跌》4.25黄金行情走势分析#原油纸白银操作建议
  9. 目标检测之分类、回归和损失函数
  10. 网络安全合规-个人信息安全影响评估-PIA