Создание BakedQuad

Версия Minecraft
1.10+
7,099
324
1,510
Как это правильно делать?
Точнее, в каком порядке ставить вершины?
Щас стоят так:
(x, y, z),(x+w, y, z),(x+w, y+h, z),(x, y+h, z)
Результат:
1521374780327.png1521374805119.png
А если поставить вершины в обратном порядке:
1521384431385.png
Подскажите, что может быть не так?
Если у кого-нить есть годный пример создания BakedQuad, поделитесь, пожалуйста.
Scala:
private def putVertex(builder: UnpackedBakedQuad.Builder, normal: Vec3d, x: Double, y: Double, z: Double, u: Float, v: Float, sprite: TextureAtlasSprite): Unit = {
    var e = 0
    import net.minecraft.client.renderer.vertex.VertexFormatElement.EnumUsage._
    while ( {
      e < format.getElementCount
    }) {
      format.getElement(e).getUsage match {
        case POSITION =>
          builder.put(e, x.toFloat, y.toFloat, z.toFloat, 1.0f)
         
        case COLOR =>
          builder.put(e, 1.0f, 1.0f, 1.0f, 1.0f)
         
        case UV =>
          if (format.getElement(e).getIndex == 0) {
            val u1 = sprite.getInterpolatedU(u)
            val v1 = sprite.getInterpolatedV(v)
            builder.put(e, u1, v1, 0f, 1f)
           
          }
        case NORMAL =>
          builder.put(e, normal.xCoord.asInstanceOf[Float], normal.yCoord.asInstanceOf[Float], normal.zCoord.asInstanceOf[Float], 0f)
         
        case _ =>
          builder.put(e)
         
      }

      
        e += 1
      
    }
  }

  val format: VertexFormat = net.minecraft.client.renderer.vertex.DefaultVertexFormats.BLOCK

  private def createQuad(v1: Vec3d, v2: Vec3d, v3: Vec3d, v4: Vec3d, sprite: TextureAtlasSprite) = {
    val normal = v1.subtract(v2).crossProduct(v3.subtract(v2))
    val builder = new UnpackedBakedQuad.Builder(format)
    builder.setTexture(sprite)
    putVertex(builder, normal, v1.xCoord, v1.yCoord, v1.zCoord, 0, 0, sprite)
    putVertex(builder, normal, v2.xCoord, v2.yCoord, v2.zCoord, 0, 16, sprite)
    putVertex(builder, normal, v3.xCoord, v3.yCoord, v3.zCoord, 16, 16, sprite)
    putVertex(builder, normal, v4.xCoord, v4.yCoord, v4.zCoord, 16, 0, sprite)
    builder.build
  }
Заранее спасибо
 
Последнее редактирование:
476
9
39
Возможно, нужно создать 2 треугольника вместо квадрата.
И тут я понял. Это гениально.
А теперь можно по подробнее боюсь что я неправильно понял.
Нужно 6 точек? Вместо 4, или раставлять точку аля левый верх, правый верх, левый низ, правый низ?
Я просто тоже мучаюсь с этой проблемой...
 
Сверху