C# 使螺旋星系臂末端密度降低的公式
我想用C#在Unity 3D中制作一个螺旋星系(我使用衍生的对数螺旋)。我想将手臂末端的密度设置为低于中间的密度,但我的手臂始终是相同的密度 我想要这个: 我目前有这个结果: 我完全不知道如何做到这一点,但用于离散的值是C# 使螺旋星系臂末端密度降低的公式,c#,unity3d,math,procedural-generation,C#,Unity3d,Math,Procedural Generation,我想用C#在Unity 3D中制作一个螺旋星系(我使用衍生的对数螺旋)。我想将手臂末端的密度设置为低于中间的密度,但我的手臂始终是相同的密度 我想要这个: 我目前有这个结果: 我完全不知道如何做到这一点,但用于离散的值是randomOffsetXY 公共整数numArms=5; 公共浮点数armOffsetMax=0.5f; 公共浮动轮换系数=5; 公共浮动随机偏移XY=0.02f; 公共浮动百分比starincentre=5; 对于(int i=0;i否。Auto AUF距离(在我的脚本
randomOffsetXY
公共整数numArms=5;
公共浮点数armOffsetMax=0.5f;
公共浮动轮换系数=5;
公共浮动随机偏移XY=0.02f;
公共浮动百分比starincentre=5;
对于(int i=0;i
将行从
distance = Mathf.Pow (distance, PixelMath.percentStarInCentre / 100) ;
对于第二个参数大于1的对象
distance = Mathf.Pow (distance, 2f);
或者取决于你想要的效果有多夸张
distance = Mathf.Pow (distance, 5f);
如果希望中心的簇较少,则需要线性和抛物线的混合:
float pow
float distance = Random.value;
float slopeMod = 0.8f; // between 0 and 1, higher is more linear
distance = Mathf.Pow(distance, 2f) *(1-slopeMod) + distance*slopeMod;
您发布的链接说的是距离的平方:
现在它开始聚集在一起。我们可以看到银河系中清晰定义的臂,臂的中间有清晰定义的棘。在这一点上,你可能会注意到,由于我们的平方,臂的进一步区域看起来比以前更密集。让我们通过拉动所有的恒星clo来解决这个问题通过距离平方运算将恒星移向中心,就像我们刚才拉近恒星手臂的方式一样:
表示这样做将从您当前拥有的东西中获取输出:
手臂外部相对密度较低的物体,如您所需:
谢谢,经过一些搜索和帮助,我需要的函数称为“衰减”函数,但它们是不同的衰减函数,如标准函数(四次函数、线性函数等)
我是这个论坛的新成员,我不知道这是否是一个很好的答案用法,但我的衰减函数实际上是:
distance=(Mathf.Pow(distance,1f/3f)-1f)/(1-slopeMod);
看起来像是distance=Mathf.Pow…
行应该对此负责。如果你这样做了会发生什么(距离,1.5 f);<代码> >或者可能是更好的指示符:<代码>距离=Mthf。Pow(距离,5f);< /代码>否。Auto AUF距离(在我的脚本PixelMath.NestStar in Calth/ 100)中是指中间的星体密度。我在这里找到了我的原始代码,但是我添加了一些编辑。“如果您执行distance=Mathf.Pow(distance,1.5f);
或distance=Mathf.Pow(distance,5f);
,会发生什么情况?”“没有任何变化吗?请回答问题,帮助我了解您的代码哪里出错。