x


How to hide just one mesh (meshfilter) from a gameObject that has 2 meshes?

We already know that it's possible to hide or deactivate a mesh using:

GetComponent(MeshRenderer).enabled = false;

but, what if the gameObject has 2 or more meshes and we want to just hide one of them? Imagine this structure: gameObject mesh1 mesh2 mesh3

How to access mesh2 and deactivate it?

Thanks

more ▼

asked Nov 19, 2009 at 11:19 PM

eXKR gravatar image

eXKR
23 6 4 10

(comments are locked)
10|3000 characters needed characters left

3 answers: sort voted first

Well i think it is not even possible to use more than one MeshRenderer on the same object, same for MeshFilter.

And i think i never see more than one mesh applied to a MeshFilter on any model of mine. If i have several meshes in one Model, it will be seperated into Parents. Then you can just hide the parents if you need to.

For example if you want to make an MMO and customize your model, you could include all kind of jackets into one model. If you then want to display only the "naked" version, just make the parent "naked" visible and everything else invisible (like "robe", "t-shirt", whatever) (just an example, there are probably better solutions).

If this doesn't help, maybe it would help to know what exactly you want to do.

EDIT:

You could use a function lide to to show only the mesh you enter in the "showExcept":

void Start () 
{
    showExcept("mesh1");
}

void showExcept(string meshName)
{
    foreach(Transform temp in transform)
    {
    	if(temp.name == meshName)
    		temp.renderer.enabled = true;
    	else
    		temp.renderer.enabled = false;
    }
}

So in this case, only "mesh1" will be displayed, everything else will be invisible. you could write several function (to activate only one mesh without deactivating the others, activate everything except one, etc).

more ▼

answered Nov 19, 2009 at 11:48 PM

Kiyaku gravatar image

Kiyaku
336 4 4 13

Your example could work for me, but my problem is that I don't know how to code it... So, for example, with the hierarchy I proposed (house/mesh1) how can I deactivate "mesh1" without deactivating "house"? Thanks

Nov 20, 2009 at 08:36 AM eXKR

edited my post with a code that could help you

Nov 20, 2009 at 09:47 AM Kiyaku
(comments are locked)
10|3000 characters needed characters left

I finally got what I wanted:

// This script is made to be applied to an unique gameObject that has 3 different meshes called HLOD, MLOD and LLOD that will correspond with its different versions.

var distance1 = 5.0; //Jump from HLOD to MLOD
var distance2 = 10.0; //Jump from MLOD to LLOD
private var HLOD : Transform;
private var MLOD : Transform;
private var LLOD : Transform;

function Start() {
  HLOD = transform.Find("HLOD");
  MLOD = transform.Find("MLOD");
  LLOD = transform.Find("LLOD");
}
function Update ()
{
    //The camera should have applied "MainCamera" tag in order to correctly switch LODs
    var campos = Camera.main.transform.position;

    if ((transform.position - campos).sqrMagnitude < distance1 * distance1 )
    {
        // use High LOD
        HLOD.active = true;
        MLOD.active = false;
        LLOD.active = false;
    }
   else if ((transform.position - campos).sqrMagnitude < distance2 * distance2)
    {
         // use Medium LOD
        HLOD.active = false;
        MLOD.active = true;
        LLOD.active = false;
    }
    else
    {
        // use Low LOD
        HLOD.active = false;
        MLOD.active = false;
        LLOD.active = true;
    }
}

This code worked like a charm for me. Thank you very much for your help.

more ▼

answered Nov 23, 2009 at 07:49 AM

eXKR gravatar image

eXKR
23 6 4 10

(comments are locked)
10|3000 characters needed characters left

If they have different materials, you could change the material to not render anything, however it seems it would make a lot more sense to actually use three gameobjects if you need to do this.

more ▼

answered Nov 20, 2009 at 08:30 AM

Lucas Meijer 1 gravatar image

Lucas Meijer 1 ♦♦
8.9k 29 55 101

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x3361

asked: Nov 19, 2009 at 11:19 PM

Seen: 6934 times

Last Updated: Nov 19, 2009 at 11:19 PM