Getting the (instantaneous) normal of a meshfilter object

This snippet below seems to return the normal, but when I rotate the object during runtime, the normal does not change. As I understand, `TransformDirection` should convert that local normal vector from a local to a global, so it should be changing? If not, how do you get the global normal of an object?

function Update(){
  var filter:MeshFilter=(GetComponent(MeshFilter) as MeshFilter);
  var normal = filter.transform.TransformDirection(filter.mesh.normals[0]); 

Actually - mea culpa... I was using the ImageTargets plane from the Qualcomm AR Unity SDK. It has a meshcollider in it, but I didn't realize it also had a script that disabled meshfilter. Got rid of that disabling script, but still no go. The downside is that ImageTargets tracks a planar object in the real world, but can't seem to return meshfilter data as you move the object - the plane normal does not change no matter which direction i move the printed card. :-(


Update, it seems the oddness was due to competitive noise from both the device camera (noise motion, while held in hands) and the target object. Some nontrivial bit of noise elimination would be needed to get this to work..

Your code works fine in isolation. Something else must be screwing it up.

Do know that you can use the generic form of GetComponent, in Unity 3's JavaScript, and that you don't need to do filter.transform.

var normal = transform.TransformDirection(GetComponent.<MeshFilter>().mesh.normals[0]); 

That code works; you need to rotate on an axis that will actually cause the normal to change. For example, if you have a plane lying flat with the normals all facing straight up, rotating around the y axis won't change the value at all.