Java 使用ModelBuilder.createArrow创建时,防止箭头在较长时间内变“胖”

Java 使用ModelBuilder.createArrow创建时,防止箭头在较长时间内变“胖”,java,libgdx,Java,Libgdx,在我的libgdx安卓应用程序中,我用以下代码创建箭头 @Override public void onAxonConnected(Pos one, Pos two) { Model lineModel = build.createArrow(one.x, one.y, one.z, two.x, two.y, two.z, 0.15 f, 0.05 f, 5, GL20.GL_TRIANGLES, new Material(), VertexAttributes.Usage.Posi

在我的libgdx安卓应用程序中,我用以下代码创建箭头

 @Override
 public void onAxonConnected(Pos one, Pos two) {

  Model lineModel = build.createArrow(one.x, one.y, one.z, two.x, two.y, two.z, 0.15 f, 0.05 f, 5, GL20.GL_TRIANGLES, new Material(), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);
  ModelInstance line = new ModelInstance(lineModel);
  this.addArrowModelInstanceToRender(line);
 }
如何防止较长的箭头比较短的连接箭头更胖

我假设在某个地方有一些乘法运算,但我希望它们都以相同的宽度和箭头大小进行渲染。这是可以实现的功能,还是我必须推出自己的模型呢


一种解决方案是计算表示箭头起点和终点的两个向量之间的距离,然后将该值传递给capLength和stemThickness乘以或除以一个或两个常数

Vector3 start = new Vector3(one.x, one.y, one.z);
Vector3 end = new  Vector3(two.x, two.y, two.z);
float distance = start.dst(end);
Model lineModel = build.createArrow(one.x, one.y, one.z, two.x, two.y, two.z, CAP_LENGTH_CONSTANT / distance, STEM_THICKNESS_CONSTANT / distance, 5, GL20.GL_TRIANGLES, new Material(), VertexAttributes.Usage.Position | VertexAttributes.Usage.Normal);

您可能需要稍微测试一下数字,以找到正确的常数

我会尝试使用小箭头的长度,除以0.15 f的CAP_长度_常数,除以0.05 f的STEM_厚度_常数来找到常数。这将产生与大箭头固定相同的图像,从而达到效果。有时候,一个解决方案是如此简单,你可以自己去想,你想知道为什么你自己不去尝试。谢谢:-