当前位置: 首页>>代码示例>>Java>>正文


Java Matrix3f.transform方法代码示例

本文整理汇总了Java中org.lwjgl.util.vector.Matrix3f.transform方法的典型用法代码示例。如果您正苦于以下问题:Java Matrix3f.transform方法的具体用法?Java Matrix3f.transform怎么用?Java Matrix3f.transform使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.lwjgl.util.vector.Matrix3f的用法示例。


在下文中一共展示了Matrix3f.transform方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: render

import org.lwjgl.util.vector.Matrix3f; //导入方法依赖的package包/类
@SuppressWarnings("ObjectAllocationInLoop")
@Override
@SideOnly(Side.CLIENT)
public void render(VertexBuffer renderer, float scale)
{
    if (quadList == null)
    {
        final List<TexturedQuad> outputQuads = Lists.newArrayList();

        for (final FutureQuad<TexturedQuad> texturedQuads : allTexturedQuads) {
            for (final TexturedQuad texturedQuad : texturedQuads.quads) {
                final PositionTextureVertex[] newPositions = new PositionTextureVertex[4];
                for (int i = 0; i < texturedQuad.vertexPositions.length; i++)
                {
                    final PositionTextureVertex vertexPosition = texturedQuad.vertexPositions[i];
                    @SuppressWarnings("NumericCastThatLosesPrecision")
                    final Vector4f position = new Vector4f((float) vertexPosition.vector3D.xCoord,
                            (float) vertexPosition.vector3D.yCoord,
                            (float) vertexPosition.vector3D.zCoord, 1);

                    final Vector3f textureCoords = new Vector3f(
                            vertexPosition.texturePositionX,
                            vertexPosition.texturePositionY,
                            1);

                    final Vector4f transformedPosition = Matrix4f.transform(texturedQuads.positionTransform, position, null);
                    final Vector3f transformedTexture = Matrix3f.transform(texturedQuads.textureTransform, textureCoords, null);

                    newPositions[i] = new PositionTextureVertex(
                            transformedPosition.getX(),
                            transformedPosition.getY(),
                            transformedPosition.getZ(),
                            transformedTexture.getX(),
                            transformedTexture.getY()
                    );
                }

                outputQuads.add(new TexturedQuad(newPositions));
            }

        }

        for (final FutureQuad<BakedQuad> bakedQuads : allBakedQuads)
        {
            for (final BakedQuad bakedQuad : bakedQuads.quads) {
                try {
                    final VertexConsumer consumer = new VertexConsumer(bakedQuad.getFormat(), bakedQuads.positionTransform, bakedQuads.textureTransform);
                    bakedQuad.pipe(consumer);
                    outputQuads.add(consumer.getOutputQuad());
                } catch (Exception e) {
                    if (!errored) {
                        LogManager.getLogger("ShearMadnessAPI").log(Level.ERROR, "Error creating chiseled model", e);
                    }
                    errored = true;
                }
            }
        }

        quadList = new TexturedQuad[outputQuads.size()];
        quadList = outputQuads.toArray(quadList);
    }

    for (final TexturedQuad texturedquad : quadList)
    {
        texturedquad.draw(renderer, scale);
    }
}
 
开发者ID:AtomicBlom,项目名称:ShearMadness,代码行数:68,代码来源:EntityMesh.java

示例2: put

import org.lwjgl.util.vector.Matrix3f; //导入方法依赖的package包/类
@Override
public void put(int element, float... data)
{
    if (element == 0)
    {
        ++currentVertexIndex;
    }

    final VertexFormatElement element1 = vertexFormat.getElement(element);
    switch (element1.getUsage())
    {
        case POSITION:
            if (data.length < 3)
            {
                currentPosition = null;
                return;
            }
            final Vector4f position = new Vector4f(data[0], data[1], data[2], 1);
            final Vector4f transform = Matrix4f.transform(positionTransform, position, null);
            currentPosition = new Vec3d(transform.x, transform.y, transform.z);

            break;
        case UV:
            if (data.length < 2)
            {
                currentTexture = null;
                return;
            }

            final Vector3f uvs = new Vector3f(data[0], data[1], 1);
            final Vector3f transformedTexture = Matrix3f.transform(textureTransform, uvs, null);
            currentTexture = new Vector3f(transformedTexture.x, transformedTexture.y, transformedTexture.z);
            break;
        default:
            break;
    }

    if (element == vertexFormat.getElementCount() - 1)
    {
        if (currentPosition == null || currentTexture == null) {
            String vertexInfo = "";
            for (final VertexFormatElement vertexFormatElement : vertexFormat.getElements()) {
                vertexInfo += String.format("Element %d - %s\n", vertexFormatElement.getIndex(), vertexFormatElement.getUsage());
            }

            throw new RuntimeException("Unexpected Vertex Format:\n" + vertexInfo);
        }

        vertices[currentVertexIndex] = new PositionTextureVertex(currentPosition, currentTexture.x, currentTexture.y);
        currentPosition = null;
        currentTexture = null;
    }
}
 
开发者ID:AtomicBlom,项目名称:ShearMadness,代码行数:54,代码来源:VertexConsumer.java

示例3: rotate

import org.lwjgl.util.vector.Matrix3f; //导入方法依赖的package包/类
/**
 * 
 * @param angle (in degrees)
 * @param x
 * @param y
 * @param z
 */
public void rotate(float angle, float x, float y, float z){
	Matrix3f rotationMatrix = rotationMatrix(angle, x, y, z);
	for (Vertex vertex : vertices){
		Matrix3f.transform(rotationMatrix, vertex.position, vertex.position);
	}
}
 
开发者ID:ObsidianSuite,项目名称:ObsidianSuite,代码行数:14,代码来源:Shape.java


注:本文中的org.lwjgl.util.vector.Matrix3f.transform方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。