AEJoy —— 表达式之碰撞检测(一)【JS】

举报
ShaderJoy 发表于 2021/11/19 00:21:10 2021/11/19
【摘要】 效果图 碰撞检测表达式允许每一层检测它的可见区域是否与任何其他层的可见区域相接触 想法 这应该很有趣。AE CS3 包含了一个新的 sampleImage() 函数,它不仅允许你采样一个图层的像...

效果图

碰撞检测表达式允许每一层检测它的可见区域是否与任何其他层的可见区域相接触

098.gif

想法

这应该很有趣。AE CS3 包含了一个新的 sampleImage() 函数,它不仅允许你采样一个图层的像素颜色数据,而且还允许你采样一个像素的 alpha 值。这为创建一种表达式提供了一个(以前不可能)的机会,该表达式可以检测一个图层的可见区域何时与另一个图层的可见区域相接触。这正是我们设计碰撞检测表达式所需要的能力。同时还希望它即使图层被缩放、旋转和/或设置父级也能正常工作。

设计

基本的想法是,我们将使用 sampleImage() 来寻找一个像素,其有一个非零的 alpha 值(对于带有该表达式的图层和合成中的任何其他层来说)。我们只需要找到一个这样的像素,以确定发生了碰撞。 最明显(暴力)的方法是使用 sampleImage() 来获取图层中每个像素的 alpha 值,并将其与其他(每个)图层中相同的世界空间位置进行比较。这种方法会非常缓慢,所以我们必须更聪明一些。

我们所需要做的就是将搜索限制在我们的图层与其他图层重叠的区域。如果我们不需要考虑一个层是否被旋转的话,我们可以只使用每个层的左上角和右下角来确定它们是否/在哪里重叠。但是因为我们希望能够容纳旋转的图层,我们需要添加一个额外的步骤,并计算每个图层的

文章来源: panda1234lee.blog.csdn.net,作者:panda1234lee,版权归原作者所有,如需转载,请联系作者。

原文链接:panda1234lee.blog.csdn.net/article/details/121260483

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。