use of net.sistr.littlemaidmodelloader.client.util.ModelPartAccessor in project LittleMaidModelLoader-Fabric by SistrScarlet.
the class SmoothModelPart method renderSmoothCuboids.
private void renderSmoothCuboids(MatrixStack.Entry defaultEntry, MatrixStack.Entry childEntry, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) {
Matrix4f defaultPosMat = defaultEntry.getModel();
Matrix3f defaultNormal = defaultEntry.getNormal();
Matrix4f childPosMat = childEntry.getModel();
Matrix3f childNormal = childEntry.getNormal();
ObjectList<Cuboid> cuboids = ((ModelPartAccessor) this).getCuboids();
for (Cuboid cuboid : cuboids) {
Quad[] quads = ((CuboidAccessor) cuboid).getQuads();
// ここで値取ってこれと一致する頂点をーの方がいいかもね
int indexQ = 0;
for (Quad quad : quads) {
Direction quadDirection = getQuadDirection(indexQ++);
Vector3f defaultNormalVec = quad.direction.copy();
defaultNormalVec.transform(defaultNormal);
Vector3f smoothNormalVec = quad.direction.copy();
smoothNormalVec.transform(childNormal);
int indexV = 0;
for (Vertex vertex : quad.vertices) {
Vector4f posVec = new Vector4f(vertex.pos.getX() / 16.0F, vertex.pos.getY() / 16.0F, vertex.pos.getZ() / 16.0F, 1.0F);
if (shouldRotate(indexV++, quadDirection, direction)) {
posVec.transform(childPosMat);
vertexConsumer.vertex(posVec.getX(), posVec.getY(), posVec.getZ(), red, green, blue, alpha, vertex.u, vertex.v, overlay, light, smoothNormalVec.getX(), smoothNormalVec.getY(), smoothNormalVec.getZ());
} else {
posVec.transform(defaultPosMat);
vertexConsumer.vertex(posVec.getX(), posVec.getY(), posVec.getZ(), red, green, blue, alpha, vertex.u, vertex.v, overlay, light, defaultNormalVec.getX(), defaultNormalVec.getY(), defaultNormalVec.getZ());
}
}
}
}
}
use of net.sistr.littlemaidmodelloader.client.util.ModelPartAccessor in project LittleMaidModelLoader-Fabric by SistrScarlet.
the class SmoothModelPart2 method renderSmoothCuboids.
private void renderSmoothCuboids(MatrixStack.Entry defaultEntry, MatrixStack.Entry parentEntry, VertexConsumer vertexConsumer, int light, int overlay, float red, float green, float blue, float alpha) {
Matrix4f defaultPosMat = defaultEntry.getModel();
Matrix3f defaultNormal = defaultEntry.getNormal();
Matrix4f parentPosMat = parentEntry.getModel();
Matrix3f parentNormal = parentEntry.getNormal();
ObjectList<Cuboid> cuboids = ((ModelPartAccessor) this).getCuboids();
for (Cuboid cuboid : cuboids) {
Quad[] quads = ((CuboidAccessor) cuboid).getQuads();
// ここで値取ってこれと一致する頂点をーの方がいいかもね
int indexQ = 0;
for (Quad quad : quads) {
Direction quadDirection = getQuadDirection(indexQ++);
Vector3f defaultNormalVec = quad.direction.copy();
defaultNormalVec.transform(defaultNormal);
Vector3f smoothNormalVec = quad.direction.copy();
smoothNormalVec.transform(parentNormal);
int indexV = 0;
for (Vertex vertex : quad.vertices) {
Vector4f posVec = new Vector4f(vertex.pos.getX() / 16.0F, vertex.pos.getY() / 16.0F, vertex.pos.getZ() / 16.0F, 1.0F);
if (shouldFollowParent(indexV++, quadDirection, direction)) {
posVec.transform(parentPosMat);
vertexConsumer.vertex(posVec.getX(), posVec.getY(), posVec.getZ(), red, green, blue, alpha, vertex.u, vertex.v, overlay, light, smoothNormalVec.getX(), smoothNormalVec.getY(), smoothNormalVec.getZ());
} else {
posVec.transform(defaultPosMat);
vertexConsumer.vertex(posVec.getX(), posVec.getY(), posVec.getZ(), red, green, blue, alpha, vertex.u, vertex.v, overlay, light, defaultNormalVec.getX(), defaultNormalVec.getY(), defaultNormalVec.getZ());
}
}
}
}
}
Aggregations