Applications use the methods of the Direct3dRMMeshBuilder Class of the com.ms.directX package to interact with mesh objects.
public class Direct3dRMMeshBuilder implements IDirect3dRMMeshBuilder { // Methods public void addFace(Direct3dRMFace f); public void addFaces(int vCount, D3dVector[] v, int nCount, D3dVector[] n, int[] cones); public void addFacesAsFloats(int vc, float[] ver, int nc, float[] norm, int[] cones); public void addFrame(Direct3dRMFrame f); public void addMesh(Direct3dRMMesh m); public void addMeshBuilder(Direct3dRMMeshBuilder mb); public int addNormal(float x, float y, float z); public int addVertex(float x, float y, float z); public Direct3dRMFace createFace(); public Direct3dRMFaceArray createFaceArray(int vCount, float[] vertices, int nCount, float[] normals, int[] cones); public Direct3dRMMesh createMesh(); public void generateNormals(); public void getBox(D3dRMBox retv); public int getColorSource(); public Direct3dRMMeshBuilder getd3drmMeshBuilder(); public int getFaceCount(); public void getFacedataSize(int[] f_cnt); public Direct3dRMFaceArray getFaces(); public void getNormalsSize(int[] n_cnt); public int getPerspective(); public int getQuality(); public void getTextureCoordinates(int idx, float[] u, float[] v); public int getVertexColor(int index); public int getVertexCount(); public void getVertices(int[] vc, D3dvector v, int[] nc, D3dvector n, int[] fs, int[] fc); public int getVerticesSize(); public void loadFromFileByPos(String filename, int position, int flags, ILoadTextureCallback c, IUnknown pUser); public void reserveSpace(int v_cnt, int n_cnt, int f_cnt); public void save(String fname, int xFormat, int save); public void scale(float sx, float sy, float sz); public void setColor(int col); public void setColorRGB(float red, float green, float blue); public void setColorSource(int val); public void setMaterial(Direct3dRMMaterial val); public void setNormal(int idx, float x, float y, float z); public void setPerspective(int persp); public void setQuality(int q); public void setTexture(Direct3dRMTexture val); public void setTextureCoordinates(int idx, float u, float v); public void setTextureTopology(int wrap_u, int wrap_v); public void setVertex(int idx, float x, float y, float z); public void setVertexColor(int idx, int c); public void setVertexColorRGB(int idx, float r, float g, float b); public void translate(float tx, float ty, float tz); }
The Direct3dRMMeshBuilder class inherits the following methods from the Direct3dRMObject class:
addDestroyCallback
duplicate
deleteDestroyCallback
getAppData
getClassName
getName
setAppData
setName
The Direct3dRMMeshBuilder object is obtained by calling the createMeshBuilder method.
There are two ways to add faces to a mesh object.
The recommended way is to use the addFaces method.
// Create a mesh builder. mb = myd3drm.createMeshBuilder(); // Add faces to the mesh. mb.addFaces(vCount, v, nCount, n, cones); // Create a material to set for the whole mesh. material = myd3drm.createMaterial(); mb.setMaterial(material); // This works.
Another possible way is to use the addVertex and addNormal methods, then use createFace to create a face, and add the vertices and normals to it. Currently, this procedure fails.
// Create a mesh builder. mb = myd3drm.createMeshBuilder(); // Add four vertices. mb.addVertex(x, y, x); // ... // Add four normals. mb.addNormal(x, y, z); // ... // Create a face from the mesh builder. d3drmface = mb.createFace(); // Use the Direct3dRMFace.addVertexAndNormalIndexed method // to add the vertex and normals to the face. d3drmface.addVertexAndNormalIndexed(index, index); // ... // Create a material to set for the whole mesh. material = myd3drm.createMaterial(); mb.setMaterial(material); // This faults.