MeshPrimitive meshPrimitive) Integer mode = meshPrimitive.getMode(); if (mode == null) mode = meshPrimitive.defaultMode(); String indicesId = meshPrimitive.getIndices(); if (indicesId != null) Optionals.of(meshPrimitive.getAttributes()); for (Entry<String, String> entry : attributes.entrySet()) String materialId = meshPrimitive.getMaterial(); if (materialId == null || GltfDefaults.isDefaultMaterialId(materialId))
/** * Create {@link Material} instances with random colors, and assign * them to the given {@link MeshPrimitive} instances * * @param meshPrimitives The {@link MeshPrimitive} instances * @param withNormals Whether the {@link MeshPrimitive} instances have * normal information */ private void assignRandomColorMaterials( Iterable<? extends MeshPrimitive> meshPrimitives, boolean withNormals) { Random random = new Random(0); for (MeshPrimitive meshPrimitive : meshPrimitives) { float r = random.nextFloat(); float g = random.nextFloat(); float b = random.nextFloat(); Material material = mtlMaterialHandler.createMaterialWithColor( withNormals, r, g, b); String materialId = GltfIds.generateId("material", gltf.getMaterials()); gltf.addMaterials(materialId, material); meshPrimitive.setMaterial(materialId); } }
String materialId = meshPrimitive.getMaterial(); meshPrimitive.getAttributes(); if (meshPrimitiveAttributes == null) String indicesAccessorId = meshPrimitive.getIndices(); if (indicesAccessorId != null)
new MeshPrimitive(); meshPrimitive.setMode(GltfConstants.GL_TRIANGLES); indicesAccessorId, indicesComponentType, "SCALAR", createIndicesByteBuffer(part, indicesComponentType)); meshPrimitive.setIndices(indicesAccessorId); positionsAccessorId, GltfConstants.GL_FLOAT, "VEC3", Buffers.createByteBufferFrom(objVertices)); meshPrimitive.addAttributes("POSITION", positionsAccessorId); texCoordsAccessorId, GltfConstants.GL_FLOAT, "VEC2", Buffers.createByteBufferFrom(objTexCoords)); meshPrimitive.addAttributes("TEXCOORD_0", texCoordsAccessorId); normalsAccessorId, GltfConstants.GL_FLOAT, "VEC3", Buffers.createByteBufferFrom(objNormals)); meshPrimitive.addAttributes("NORMAL", normalsAccessorId);
/** * Create a default {@link Material}, and assign it to all the given * {@link MeshPrimitive} instances * * @param meshPrimitives The {@link MeshPrimitive} instances * @param withNormals Whether the {@link MeshPrimitive} instances have * normal information */ private void assignDefaultMaterial( Iterable<? extends MeshPrimitive> meshPrimitives, boolean withNormals) { Material material = mtlMaterialHandler.createMaterialWithColor( withNormals, 0.75f, 0.75f, 0.75f); String materialId = GltfIds.generateId("material", gltf.getMaterials()); gltf.addMaterials(materialId, material); for (MeshPrimitive meshPrimitive : meshPrimitives) { meshPrimitive.setMaterial(materialId); } }
/** * Create a {@link Material} for the given OBJ and MTL, and assign it * to all the given {@link MeshPrimitive} instances * * @param meshPrimitives The {@link MeshPrimitive} instances * @param obj The OBJ * @param mtl The MTL */ private void assignMaterial( Iterable<? extends MeshPrimitive> meshPrimitives, ReadableObj obj, Mtl mtl) { Material material = mtlMaterialHandler.createMaterial(obj, mtl); String materialId = GltfIds.generateId("material", gltf.getMaterials()); gltf.addMaterials(materialId, material); for (MeshPrimitive meshPrimitive : meshPrimitives) { meshPrimitive.setMaterial(materialId); } }