Mirrored Block has flipped Z vector flipped

Hello, I just noticed a possible bug that goes back to Elefront 4 and now. Whenever I reference a mirrored Block, it’s reference plane seems to have a flipped Z direction (as shown by my spotlight directions). If I check the block in rhino everything seems fine and the Z direction is ok. Note that the mirrored block is on the left


As you can see, the Blue arrow (the z vector) is correctly oriented in both instances. But in grasshopper, the mirrored block’s plane is flipped.

Hi - unfortunately this is the nature of mirroring. Basically, once you have a mirror operation, the mirrored object now has a “left handed” orientation. That is, the relationship between X, Y, and Z axis changes.

So, I believe what you are asking for is what is on the Left in the image above. However, Planes in Rhino always follow the Right Hand Rule, which means it can’t really be “mirrored”. You can see in the image above that while the Curves representing the axis system can be mirrored, the Planes cannot (as indicated by the direction of the green arrows).

If it helps: block instances do not really have a Reference Plane, in terms of how they are defined - otherwise they could never be mirrored (since you can’t have a mirrored / “left handed” plane) - what defines an Instance is the block Definition, and a Transformation. So when eleFront provides a reference plane, it is simply taking the World XY plane and then applying the Block’s transformation to it, as a visual aid. But if you wanted to insert an object or another block with the same transformation (that is, with the mirroring), you would need to apply the transformation rather than using the plane to Orient it. For convenience, eleFront also makes the block transformation available.

I hope that explanation is clear enough!

Thank you for the response, Keyan. I understand, however, my goal is to use the Z vector to orient my spotlight. Is there a way to always orient my spotlight according to the natural Z vector of the block? I can’t really think of anyway other than maybe trying to identify mirrored blocks in grasshopper then flipping those planes to the appropriate orientation.

Ok I think I’m good now, I just noticed that all my mirrored blocks have a negative Z value, I can use that as an identifier.

In that case, one approach would be to create a line representing the Unit Z vector and apply the block transformation to it - you should be able to just get the Transformation for all blocks and use that without having to differentiate between whether they are mirrored or not:

Could be simpler ways depending on how you are orienting your light (for example, it might be possible to apply the transformation to the light directly?), but hopefully that’s a place to start.

1 Like

Thank you so much, Keyan. You rock.

Are these Vray-IES Lights?

yes, actually both IES and spot :slight_smile: