- Home /
How do you make a submesh properly?
I could not find anything else helping me on this topic so don't mark this as a repeat!
I need to make 2 submeshes, one for transparent stuff and one for opaque stuff but I could not for the life of me figure out how! So I have the chunk script which handles all the chunk stuff and a chunk object with a mesh renderer, a mesh collider and a mesh filter with 2 materials on the filter and a script for handling meshes called meshData. These contain:
Chunk.cs:
void UpdateChunk()
{
rendered = true;
MeshData meshData = new MeshData();
MeshData meshDatasub = new MeshData();
for (int x = 0; x < chunkSize; x++)
{
for (int y = 0; y < chunkSize; y++)
{
for (int z = 0; z < chunkSize; z++)
{
if(blocks[x, y, z].GetType() == typeof(BlockGlass))
{
meshDatasub = blocks[x, y, z].Blockdata(this, x, y, z, meshDatasub);
}else{
meshData = blocks[x, y, z].Blockdata(this, x, y, z, meshData);
}
}
}
}
RenderMesh(meshData, meshDatasub);
}
// Sends the calculated mesh information
// to the mesh and collision components
void RenderMesh(MeshData meshData, MeshData meshDatasub)
{
filter.mesh.subMeshCount = 2;
filter.mesh.Clear();
filter.mesh.vertices = meshData.vertices.ToArray();
filter.mesh.triangles = meshData.triangles.ToArray ();
filter.mesh.colors32 = meshData.colors.ToArray();
filter.mesh.uv = meshData.uv.ToArray();
filter.mesh.RecalculateNormals();
coll.sharedMesh = null;
Mesh mesh = new Mesh();
mesh.subMeshCount = 2;
mesh.vertices = meshData.colVertices.ToArray();
mesh.triangles = meshData.colTriangles.ToArray();
mesh.RecalculateNormals();
coll.sharedMesh = mesh;
}
Meshdata:
public List<Vector3> vertices = new List<Vector3>();
public List<int> triangles = new List<int>();
public List<Color32> colors = new List<Color32>();
public List<Vector3> colVertices = new List<Vector3>();
public List<int> colTriangles = new List<int>();
public List<Vector2> uv = new List<Vector2>();
public bool useRenderDataForCol;
I have meshData and meshDatasub in chunk.cs under RenderMesh() and I would like to know how to assign 2 submeshes with meshData and meshDatasub and tiles being opaque and tiles 2 being transarent! Thanks!
Your answer
Follow this Question
Related Questions
Assigning UV Map to model at runtime 0 Answers
uv sub meshes in cube c# 0 Answers
UV affectation with multi submeshes 1 Answer
Why does my script-made mesh only look visible from one side??? 1 Answer
Issue with UV mapping a cube 1 Answer