我正在构建一个简单的粒子系统,并希望使用结构的单个数组缓冲区来管理我的粒子.也就是说,我找不到允许我从任意缓冲区中取出malloc()和free()的C函数.这是一些伪代码来表明我的意图:
Particle* particles = (Particle*) malloc( sizeof(Particle) * numParticles );
Particle* firstParticle = <buffer_alloc>( particles );
initialize_particle( firstParticle );
// ... Some more stuff
if (firstParticle->life < 0)
<buffer_free>( firstParticle );
// @ program's end
free(particles);
Run Code Online (Sandbox Code Playgroud)
其中<buffer_alloc>和<buffer_free>是从任意指针分配和释放内存块的函数(可能具有诸如缓冲区长度等的附加元数据).这些功能是否存在和/或有更好的方法吗?谢谢!
我在 3D 空间中有一组粒子轨迹,我想使用 3D 流线来表示它们。我可以使用plot3轻松获得轨迹,并且可以使用quiver3表示速度矢量。作为示例,可以考虑以下示例脚本
zz = 0:pi/50:10*pi;
yy = zz.*sin(zz);
xx = zz.*cos(zz);
px=[0,diff(xx)];
py=[0,diff(yy)];
pz=[0,diff(zz)];
plot3(xx,yy,zz);
hold all;
quiver3(xx(1:5:end),yy(1:5:end),zz(1:5:end),px(1:5:end),py(1:5:end),pz(1:5:end),3);
hold off;
Run Code Online (Sandbox Code Playgroud)
产生以下情节

我想要相同的图,但用 3D 流管代替轨迹线。处理这种情况最有效的方法是什么?
只是想知道是否有人可以为我指出一个好的方向,让我可以用粒子成行填充不规则形状,然后将其设置为动画。
这是我能找到的最接近的例子 - http://www.wkams.com/#!/work/detail/coca-cola-music-vis
我认为可行的两种方法是计算出我想要的密度,绘制出每行需要多少个粒子,并相应地定位。这种方式看起来很及时,但也不是很稳健。
第二种方法,我似乎不知道如何做到这一点,是在画布中绘制形状,然后用粒子生成填充形状,将它们保持在形状的约束中。
任何关于如何做到这一点的一般概念将不胜感激。
如果没有意义请告诉我。
干杯
我正在使用 for 循环生成六边形网格,但遇到了一些问题
for (var i=0; i <= rows; i++) {
for (var j=0; j <= cols; j++) {
ctx.save();
ctx.translate(0+i*distX, 0+j*distY);
drawHexagon(ctx);
ctx.fill();
ctx.restore();
}
}
Run Code Online (Sandbox Code Playgroud)
我的最终目标是创建一个六边形网格,当鼠标光标在页面上移动时,该六边形网格会远离鼠标光标,并产生影响区域。我不知道如何在每个六边形之间绘制路径,并且在尝试为六边形设置动画时也遇到问题。
我仍然是一个画布新手,我浏览了 Mozilla 开发者网络上的教程,所有动画都是在单个对象上,而不是在网格中生成的对象。
我想我应该尝试存储网格并稍后影响它,但我不确定我会如何去做,我也不认为画布是这样工作的。
我发现这几乎是我想做的,但我无法理解它是如何工作的: http: //codepen.io/soulwire/pen/Ffvlo
我现在很好地梳理它,如果有人能引导我完成它,那就太好了:)
编辑:我已经在点后面绘制了一个网格,我也想操纵它。我仍然不明白上面链接的代码笔,它有点超出我的理解范围。
我在 dribbble 上看到了许多网站和应用程序设计概念上的粒子散射效果。效果是这样的:- https://www.craftedbygc.com/
效果也可以看这个链接:- https://dribbble.com/shots/3511585-hello-dribbble
我们怎样才能在一个 iOS 应用中实现这样的效果呢?
我需要创建一个粒子系统并保留创建的粒子.我需要使用iphone加速度计摇动/移动创建的粒子.此外,粒子的数量需要非常高(我需要显示沙子!).
我没有任何OpenGLES编程经验.
初步搜索后,我发现Cocos2D可用于粒子生成.但是没有办法将粒子保留在CCParticle系统中.作为一种解决方法,我尝试在粒子生成结束时创建许多精灵并将它们显示为粒子.但是用加速度计移动少量精灵会大大降低帧速率.
请建议如何实现这一点,以及我是否应该寻找其他框架或者是否有某种类似的演示代码.
谢谢,Swapnil
我想制作水果忍者刀片.我正在使用cocos2d,而MotionStreak对此非常难看.MotionStreak的任何其他方法或更好的设置?可能是粒子系统?任何类似于ParticleDesigner的免费伟大工具?
我正在构建粒子系统,我想添加的功能之一是"目标"功能.我想要做的是为每个粒子设置一个X,Y目标,并让它去那里,虽然不是直线(duh),但考虑到应用于粒子的所有其他运动效果.
我的粒子有相关参数:
我想要实现的是粒子在它的最后生命周期中到达目标X,Y,同时从它的原始值(速度和加速度)开始,因此朝向目标的运动看起来"平滑".我正在考虑在目标方向上加速它,同时重新计算每个嘀嗒声所需的加速力.虽然感觉不对,但是我很乐意听到一些建议.
我正在寻找与SpriteKit发射器粒子相同的效果,该scale效果可以根据时间使粒子图像变大或变小。(例如,一个简单的红色圆圈,变大并在 1 秒后消失。)我找不到scale与 中找到的选项相同的选项SpriteKit。图像可以更大并保持更大,但它不会根据当时的时间而改变。
有人知道这样做的好方法吗?
谢谢
编辑:
这些尝试都没有成功,你知道为什么吗?
func addParticleSceneKit(){
println("add")
var fire = SCNParticleSystem(named: "circle1.scnp", inDirectory: "art.scnassets/Particles")
fire.particleSize = 5
emitter.addParticleSystem(fire) //emitter is a SCNNode
/*
let bigger = SCNAction.runBlock { (node) -> Void in
dispatch_async(dispatch_get_main_queue(), { () -> Void in
SCNTransaction.setAnimationDuration(1)
fire.propertyControllers = [SCNParticlePropertySize : 10.0]
})
}
emitter.runAction(bigger)
*/
//SCNTransaction.begin()
//SCNTransaction.setAnimationDuration(1)
//fire.propertyControllers = [SCNParticlePropertySize : 10.0]
//SCNTransaction.commit()
}
Run Code Online (Sandbox Code Playgroud) 我想创造出在天空中吹起的褐色烟雾。
我该如何创建呢?