graphics - 我应该为粒子引擎可编写脚本的引擎设计什么样的语言?

标签 graphics language-design interpreter

我想知道哪种表达方式适合用于生成粒子效果的语言。 假设希望引擎尽可能灵活,它应该具有什么样的“功能”? (除了颜色、位置、速度、加速度等琐碎的内容)

最佳答案

所以每个人都敦促你不要重新发明轮子,这是一个好主意,我对 Python 情有独钟(它允许你的脚本用户也安装和使用大量其他有用的数学库和c),但 LUA 毫无疑问甚至更容易集成(其他脚本语言,如 Ruby 无疑也可以)。不编写自己的临时脚本语言是很好的建议。

但是阅读你的问题向我表明,你的问题更多的是——我的引擎对象的哪些属性(以及哪些对象——粒子,当然,但是,除此之外还有什么)我应该暴露给我的任何脚本语言ember(或者,通过 MS COM 或 .NET,到我的用户喜欢的任何脚本或非脚本语言)?

每个粒子的具体属性(例如您列出的那些)无疑是值得的。除了点状粒子之外,您的引擎中是否还有其他东西,例如表面和其他非点状实体,粒子可能会反弹?吸引力或排斥力又如何呢?你的粒子可能有角动量/自旋吗?

一个好主意是让你的粒子属性“expando”,用一个流行的术语(其他对象模型以不同的方式表达相同的想法)——根据使用你的引擎的应用程序,其他程序员可能决定添加到粒子,无论它们需要什么属性……也许是质量,比如说——也许是电荷——也许是欧分的成本,据你所知或关心;-)。与仅提供“粒子 ID”(当然您应该这样做;-)相比,这使您的用户的生活更轻松,以便他们在哈希表等中使用以跟踪他们关心的特定属性!允许他们添加“方法”和“触发器”(在满足某些条件时自动调用的方法,例如两个粒子比特定距离更近)会很棒,但可能有点困难。

别忘了,顺便说一句,允许一个好的方法将粒子系统的当前状态(包括用户添加的扩展属性)“快照”到指定的流或文件,并从这样的快照中恢复 - 这绝对是在许多用途中至关重要。

除了特定的粒子(如果有的话,可能还包括其他对象,例如表面),您可能应该拥有一个具有自己的属性(包括扩展属性)以及理想的方法和触发器的“全局环境”。例如,作用于所有粒子的力场取决于它们的位置(可能还有它们的电荷、质量等......!-)......

希望其中一些想法能让您感兴趣——我很难说,因为我不知道您的预期应用领域!-)

关于graphics - 我应该为粒子引擎可编写脚本的引擎设计什么样的语言?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1077563/

相关文章:

c++ - XML 文件中的动态变量和函数调用

c# - 将大量 (~1000-2000) Jpeg 图像合并为一个

c++ - OpenGL 两个屏幕

language-design - J 的 # 运算符 : why not reversed?

parsing - 什么语法糖或语言特性使语言难以/难以解析?

linux - Expect脚本完成后不退出

python - pycharm中远程解释器导入错误

java - 调整高 BufferedImage 大小时如何保持/偏爱某些像素值?

java - 如何复制图像/缓冲图像

language-design - 解析 "off-side"(基于缩进)的语言