• Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
  • Asset Store
  • Get Unity

UNITY ACCOUNT

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account
  • Blog
  • Forums
  • Answers
  • Evangelists
  • User Groups
  • Beta Program
  • Advisory Panel

Navigation

  • Home
  • Products
  • Solutions
  • Made with Unity
  • Learning
  • Support & Services
  • Community
    • Blog
    • Forums
    • Answers
    • Evangelists
    • User Groups
    • Beta Program
    • Advisory Panel

Unity account

You need a Unity Account to shop in the Online and Asset Stores, participate in the Unity Community and manage your license portfolio. Login Create account

Language

  • Chinese
  • Spanish
  • Japanese
  • Korean
  • Portuguese
  • Ask a question
  • Spaces
    • Default
    • Help Room
    • META
    • Moderators
    • Topics
    • Questions
    • Users
    • Badges
  • Home /
avatar image
1
Question by Lumpa · Sep 16, 2013 at 12:13 AM · reflectioneffectmirrorportal

Tweak MirrorReflection.cs (Portal Effect)

I'm trying to tweak MirrorReflection.cs to allow me to place two planes (mirrors) that each show the other ones reflection instead of their own.

Mirror Reflection wiki/code

I've managed to make them show all kinds of weird crap, but apparently I cant figure out how to go about producing the portal effect.

Comment
Add comment
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users

1 Reply

· Add your reply
  • Sort: 
avatar image
0

Answer by aldonaletto · Sep 16, 2013 at 01:15 AM

Mirror scripts modify the camera matrix so that the camera "thinks" to be in a position behind the mirror plane (pure math - the camera's actual position is irrelevant). If you want to show the image from mirror A in mirror B and vice versa, fool the camera a little more by passing the other mirror's transform when calculating the mirror plane. Add a Transform variable mirrorObject to the script and assign to it the other mirror, and make the mirror plane calculation use this variable instead of the object's transform. The changes are the following:

 public class MirrorReflection : MonoBehaviour
 {
     // add this variable:
     public Transform mirrorObject; // drag the other mirror here
     public bool m_DisablePixelLights = true;
     ...
     ...
     // find out the reflection plane: position and normal in world space
     Vector3 pos = mirrorObject.position; // <= replace transform with mirrorObject
     Vector3 normal = mirrorObject.up;    // <= do the same here
     ...

NOTE: I've not tested this, but the logic should be ok. Let me know if something is wrong.

NOTE2: The mirrors must not be facing each other!

Comment
Add comment · Show 2 · Share
10 |3000 characters needed characters left characters exceeded
▼
  • Viewable by all users
  • Viewable by moderators
  • Viewable by moderators and the original poster
  • Advanced visibility
Viewable by all users
avatar image Lumpa · Sep 16, 2013 at 04:18 AM 0
Share

Hello, first of all thanks very much for your answer!

That was what I figured aswell, but I can't get it working with that code. :/

avatar image aldonaletto · Sep 16, 2013 at 05:53 AM 0
Share

Ok, I'll test this and go back here

UPDATE: I tested the use of another object as the mirror plane reference, and things worked fine while the other object was inside the main camera's frustum. When it was outside the frustum, however, weird images appeared. I suppose that this is due to the mirror camera matrix being calculated as a reflection of the main camera - maybe reflecting through an object out of view generates an invalid matrix.

Your answer

Hint: You can notify a user about this post by typing @username

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

Welcome to Unity Answers

The best place to ask and answer questions about development with Unity.

To help users navigate the site we have posted a site navigation guide.

If you are a new user to Unity Answers, check out our FAQ for more information.

Make sure to check out our Knowledge Base for commonly asked Unity questions.

If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes.



Follow this Question

Answers Answers and Comments

16 People are following this question.

avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image avatar image

Related Questions

How to make a mirror in 3.x? 0 Answers

Problem with the mirror view made by reflection probe in android build 0 Answers

How to mirror an object (reverse its sides)? 2 Answers

Controlling the opacity of the reflection in the Mirror Reflection Shader 0 Answers

Mirrorreflection V3 needed for Unity 3? 0 Answers


Enterprise
Social Q&A

Social
Subscribe on YouTube social-youtube Follow on LinkedIn social-linkedin Follow on Twitter social-twitter Follow on Facebook social-facebook Follow on Instagram social-instagram

Footer

  • Purchase
    • Products
    • Subscription
    • Asset Store
    • Unity Gear
    • Resellers
  • Education
    • Students
    • Educators
    • Certification
    • Learn
    • Center of Excellence
  • Download
    • Unity
    • Beta Program
  • Unity Labs
    • Labs
    • Publications
  • Resources
    • Learn platform
    • Community
    • Documentation
    • Unity QA
    • FAQ
    • Services Status
    • Connect
  • About Unity
    • About Us
    • Blog
    • Events
    • Careers
    • Contact
    • Press
    • Partners
    • Affiliates
    • Security
Copyright © 2020 Unity Technologies
  • Legal
  • Privacy Policy
  • Cookies
  • Do Not Sell My Personal Information
  • Cookies Settings
"Unity", Unity logos, and other Unity trademarks are trademarks or registered trademarks of Unity Technologies or its affiliates in the U.S. and elsewhere (more info here). Other names or brands are trademarks of their respective owners.
  • Anonymous
  • Sign in
  • Create
  • Ask a question
  • Spaces
  • Default
  • Help Room
  • META
  • Moderators
  • Explore
  • Topics
  • Questions
  • Users
  • Badges