Java Code Examples for de.javagl.obj.ObjData#getNormals()
The following examples show how to use
de.javagl.obj.ObjData#getNormals() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ObjGltfAssetCreatorV1.java From JglTF with MIT License | 4 votes |
/** * Create the {@link MeshPrimitive} from the given OBJ data. * * @param part The OBJ * @param partName A name that will be used as a basis to create the IDs of * the {@link BufferView} and {@link Accessor} instances * @return The {@link MeshPrimitive} */ private MeshPrimitive createMeshPrimitive(ReadableObj part, String partName) { MeshPrimitive meshPrimitive = new MeshPrimitive(); meshPrimitive.setMode(GltfConstants.GL_TRIANGLES); // Add the indices data from the OBJ to the buffer structure String indicesAccessorId = partName + "_indices"; bufferStructureBuilder.createAccessorModel( indicesAccessorId, indicesComponentType, "SCALAR", createIndicesByteBuffer(part, indicesComponentType)); meshPrimitive.setIndices(indicesAccessorId); bufferStructureBuilder.createArrayElementBufferViewModel( partName + "_indices_bufferView"); // Add the vertices (positions) from the OBJ to the buffer structure String positionsAccessorId = partName + "_positions"; FloatBuffer objVertices = ObjData.getVertices(part); bufferStructureBuilder.createAccessorModel( positionsAccessorId, GltfConstants.GL_FLOAT, "VEC3", Buffers.createByteBufferFrom(objVertices)); meshPrimitive.addAttributes("POSITION", positionsAccessorId); // Add the texture coordinates from the OBJ to the buffer structure boolean flipY = true; FloatBuffer objTexCoords = ObjData.getTexCoords(part, 2, flipY); if (objTexCoords.capacity() > 0) { String texCoordsAccessorId = partName + "_texcoords0"; bufferStructureBuilder.createAccessorModel( texCoordsAccessorId, GltfConstants.GL_FLOAT, "VEC2", Buffers.createByteBufferFrom(objTexCoords)); meshPrimitive.addAttributes("TEXCOORD_0", texCoordsAccessorId); } // Add the normals from the OBJ to the buffer structure FloatBuffer objNormals = ObjData.getNormals(part); if (objNormals.capacity() > 0) { ObjNormals.normalize(objNormals); String normalsAccessorId = partName + "_normals"; bufferStructureBuilder.createAccessorModel( normalsAccessorId, GltfConstants.GL_FLOAT, "VEC3", Buffers.createByteBufferFrom(objNormals)); meshPrimitive.addAttributes("NORMAL", normalsAccessorId); } bufferStructureBuilder.createArrayBufferViewModel( partName + "_attributes_bufferView"); return meshPrimitive; }
Example 2
Source File: ObjGltfAssetCreatorV2.java From JglTF with MIT License | 4 votes |
/** * Create the {@link MeshPrimitive} from the given OBJ data. * * @param part The OBJ * @param partName A name that will be used as a basis to create the IDs of * the {@link BufferView} and {@link Accessor} instances * @return The {@link MeshPrimitive} */ private MeshPrimitive createMeshPrimitive(ReadableObj part, String partName) { MeshPrimitive meshPrimitive = new MeshPrimitive(); meshPrimitive.setMode(GltfConstants.GL_TRIANGLES); // Add the indices data from the OBJ to the buffer structure int indicesAccessorIndex = bufferStructureBuilder.getNumAccessorModels(); bufferStructureBuilder.createAccessorModel( "indicesAccessor_" + indicesAccessorIndex, indicesComponentType, "SCALAR", createIndicesByteBuffer(part, indicesComponentType)); meshPrimitive.setIndices(indicesAccessorIndex); bufferStructureBuilder.createArrayElementBufferViewModel( partName + "_indices_bufferView"); // Add the vertices (positions) from the OBJ to the buffer structure int positionsAccessorIndex = bufferStructureBuilder.getNumAccessorModels(); FloatBuffer objVertices = ObjData.getVertices(part); bufferStructureBuilder.createAccessorModel( "positionsAccessor_" + positionsAccessorIndex, GltfConstants.GL_FLOAT, "VEC3", Buffers.createByteBufferFrom(objVertices)); meshPrimitive.addAttributes("POSITION", positionsAccessorIndex); // Add the texture coordinates from the OBJ to the buffer structure boolean flipY = true; FloatBuffer objTexCoords = ObjData.getTexCoords(part, 2, flipY); if (objTexCoords.capacity() > 0) { int texCoordsAccessorIndex = bufferStructureBuilder.getNumAccessorModels(); bufferStructureBuilder.createAccessorModel( "texCoordsAccessor_" + texCoordsAccessorIndex, GltfConstants.GL_FLOAT, "VEC2", Buffers.createByteBufferFrom(objTexCoords)); meshPrimitive.addAttributes("TEXCOORD_0", texCoordsAccessorIndex); } // Add the normals from the OBJ to the buffer structure FloatBuffer objNormals = ObjData.getNormals(part); if (objNormals.capacity() > 0) { ObjNormals.normalize(objNormals); int normalsAccessorIndex = bufferStructureBuilder.getNumAccessorModels(); bufferStructureBuilder.createAccessorModel( "normalsAccessor_" + normalsAccessorIndex, GltfConstants.GL_FLOAT, "VEC3", Buffers.createByteBufferFrom(objNormals)); meshPrimitive.addAttributes("NORMAL", normalsAccessorIndex); } bufferStructureBuilder.createArrayBufferViewModel( partName + "_attributes_bufferView"); return meshPrimitive; }