{"size": 26833, "ext": "js", "max_stars_repo_path": "ForumArchive/acc/post_10995_page_1.js", "max_stars_repo_name": "doc22940/Extensions", "max_stars_repo_stars_event_min_datetime": "2015-01-01T17:33:35.000Z", "max_stars_repo_stars_event_max_datetime": "2022-02-26T16:38:08.000Z", "max_issues_repo_path": "ForumArchive/acc/post_10995_page_1.js", "max_issues_repo_name": "doc22940/Extensions", "max_issues_repo_issues_event_min_datetime": "2015-06-20T00:39:16.000Z", "max_issues_repo_issues_event_max_datetime": "2021-09-02T22:55:27.000Z", "max_forks_repo_path": "ForumArchive/acc/post_10995_page_1.js", "max_forks_repo_name": "doc22940/Extensions", "max_forks_repo_forks_event_min_datetime": "2015-04-29T09:50:11.000Z", "max_forks_repo_forks_event_max_datetime": "2022-03-18T09:20:44.000Z"}
{"max_stars_count": 136, "max_issues_count": 60, "max_forks_count": 141, "avg_line_length": 26833.0, "max_line_length": 26833, "alphanum_fraction": 0.8664703909}
[{"Owner":"Iwaa-kun","Date":"2014-12-11T10:12:23Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_Hi_co__lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt__lt_span_gt__lt_span_gt_I have_lt_/span_gt_ _lt_span_gt_meshes that I_lt_/span_gt_ _lt_span_gt_dynamically_lt_/span_gt_ adds _lt_span_gt_on a scene._lt_/span_gt_ _lt_span_gt_Among these meshes_lt_/span_gt__lt_span_gt__co__lt_/span_gt_ _lt_span_gt_there are_lt_/span_gt_ _lt_span_gt_mirrors._lt_/span_gt__lt_br_gt__lt_span_gt_I used_lt_/span_gt_ _lt_span_gt_this tutorial to_lt_/span_gt_ _lt_span_gt_make_lt_/span_gt_ _lt_span_gt_reflections_lt_/span_gt_ _lt_span_gt_and it works_lt_/span_gt_ _lt_span_gt_very well_dd_ _lt_a href_eq__qt_https_dd_//github.com/BabylonJS/Babylon.js/wiki/Advanced-Texturing_qt_ rel_eq__qt_external nofollow_qt__gt_https_dd_//github.com/BabylonJS/Babylon.js/wiki/Advanced-Texturing_lt_/a_gt__lt_/span_gt__lt_br_gt__lt_span_gt_But when_lt_/span_gt_ _lt_span_gt_I start to_lt_/span_gt_ _lt_span_gt_rotate_lt_/span_gt_ _lt_span_gt_my_lt_/span_gt_ mesh_lt_span_gt__co__lt_/span_gt_ _lt_span_gt_the reflection_lt_/span_gt_ _lt_span_gt_does not follow the_lt_/span_gt_ _lt_span_gt_rotation._lt_/span_gt__lt_br_gt__lt_br_gt__lt_span_gt_How to make_lt_/span_gt_ _lt_span_gt_the Plane_lt_/span_gt_ _lt_span_gt_follows the_lt_/span_gt_ _lt_span_gt_rotation of the mesh?_lt_/span_gt__lt_/span_gt__lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt__lt_span_gt__lt_span_gt_I _lt_/span_gt__lt_span_gt_attached_lt_/span_gt_ _lt_span_gt_an example of what_lt_/span_gt_ _lt_span_gt_I have_dd__lt_/span_gt__lt_br_gt__lt_span_gt_I have several_lt_/span_gt_ _lt_span_gt_mirrors and_lt_/span_gt_ _lt_span_gt_1 with_lt_/span_gt_ _lt_span_gt_a- 45degree_lt_/span_gt_ _lt_span_gt_angle (-0.785 radian)._lt_/span_gt_ _lt_span_gt__lt_span_gt_There are_lt_/span_gt_ _lt_span_gt_no differences_lt_/span_gt_ _lt_span_gt_in the reflections_lt_/span_gt__lt_span_gt_._lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt__lt_span_gt__lt_span_gt_Here is the same_lt_/span_gt_ _lt_span_gt_problem on the_lt_/span_gt_ _lt_span_gt_playground_lt_/span_gt__lt_span_gt__dd_ _lt_/span_gt__lt_/span_gt__lt_a href_eq__qt_http_dd_//www.babylonjs-playground.com/#1UETWM_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//www.babylonjs-playground.com/#1UETWM_lt_/a_gt__lt_/p_gt__lt_p_gt__lt_span_gt__lt_span_gt_The reflection of_lt_/span_gt_ _qt__lt_span_gt_plane2_lt_/span_gt__qt_ _lt_span_gt__eq__eq__eq_ The reflection of_lt_/span_gt__lt_span_gt_ _qt_plane_lt_/span_gt__lt_span_gt__qt__lt_/span_gt__lt_/span_gt__lt_/p_gt__lt_p_gt__lt_span_gt__lt_span_gt_And _lt_/span_gt__lt_/span_gt__qt_plane2_qt_ is a clone of _qt_plane_qt__lt_/p_gt__lt_p_gt__lt_a class_eq__qt_ipsAttachLink ipsAttachLink_image_qt_ href_eq__qt_http_dd_//www.html5gamedevs.com/uploads/monthly_12_2014/post-11378-0-49484500-1418292251.jpg_qt_ rel_eq__qt_external nofollow_qt__gt__lt_img src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/monthly_12_2014/post-11378-0-49484500-1418292251.jpg_qt_ data-fileid_eq__qt_3249_qt_ class_eq__qt_ipsImage ipsImage_thumbnailed_qt_ alt_eq__qt_post-11378-0-49484500-1418292251.jpg_qt__gt__lt_/a_gt__lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Dad72","Date":"2014-12-11T11:24:52Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_You must create a clone of your material and change the direction of reflection. You could well reflect for vertical plane and one for horizontal plane materials._lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_div_gt__lt_pre class_eq__qt_ipsCode prettyprint_qt__gt_//Creation of a mirror material Horizontal (clone)var mirrorMaterialHorizontal _eq_ mirrorMaterialVertical.clone(_qt_texture5_qt_)_sm_//change of direction of reflectionmirrorMaterialHorizontal.reflectionTexture.mirrorPlane _eq_ new BABYLON.Plane(0_co_ 0_co_ -1.0_co_ -10.0)_sm__lt_/pre_gt__lt_/div_gt__lt_div_gt__lt_pre class_eq__qt_ipsCode prettyprint_qt__gt_var plane2 _eq_ plane.clone(_qt_plan2_qt_)_sm_plane2.rotate(BABYLON.Axis.X_co_ 1.5_co_ BABYLON.Space.LOCAL)_sm_plane2.translate(BABYLON.Axis.Y_co_ -10_co_ BABYLON.Space.LOCAL)_sm_//The new material is added to the plan cloneplane2.material _eq_ mirrorMaterialHorizontal_sm_ _lt_/pre_gt__lt_p_gt_PLayground_dd__lt_/p_gt__lt_p_gt__lt_a href_eq__qt_http_dd_//www.babylonjs-playground.com/#1UETWM%231_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//www.babylonjs-playground.com/#1UETWM#1_lt_/a_gt__lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt_PS_dd_ _lt_strike_gt_new_lt_/strike_gt_ BABYLON.Vector3.Zero() needs no _qt_new_qt_ behind_lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_/div_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Iwaa-kun","Date":"2014-12-11T13:42:54Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_div_gt__lt_br_gt__lt_div_gt__lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt_Thank you_lt_/span_gt_ _lt_span_gt_for the help b_lt_/span_gt__lt_/span_gt__lt_span_gt__lt_span_gt_ut I think_lt_/span_gt_ _lt_span_gt_I picked a_lt_/span_gt_ _lt_span_gt_bad example_lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_span_gt_ with a_lt_/span_gt_ _lt_span_gt_sphere_lt_/span_gt_ ^^_t__lt_/span_gt__lt_/div_gt__lt_br_gt__lt_div_gt_ _lt_/div_gt__lt_br_gt__lt_div_gt__lt_span_gt__lt_span_gt_I made_lt_/span_gt_ _lt_span_gt_another_lt_/span_gt_ _lt_span_gt_playground_lt_/span_gt_ _lt_span_gt_with_lt_/span_gt_ _lt_span_gt_a box_dd_ _lt_a href_eq__qt_http_dd_//www.babylonjs-playground.com/#1UETWM%233_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//www.babylonjs-playground.com/#1UETWM#3_lt_/a_gt__lt_/span_gt__lt_/span_gt__lt_/div_gt__lt_br_gt__lt_div_gt__lt_span_gt__lt_span_gt_Here we see_lt_/span_gt_ _lt_span_gt_the reflection_lt_/span_gt_ _lt_span_gt_is distorted_lt_/span_gt_ _lt_span_gt_on the mirrors_lt_/span_gt_ _lt_span_gt_that are_lt_/span_gt_ _lt_span_gt_on the sides. _lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt_( _lt_span_gt__lt_span_gt_For me_co__lt_/span_gt_ _lt_span_gt_should have been_lt_/span_gt_ more _lt_span_gt_like that_lt_/span_gt__lt_span_gt__dd__lt_/span_gt__lt_/span_gt_ _lt_a href_eq__qt_http_dd_//www.babylonjs-playground.com/#1UETWM%234_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//www.babylonjs-playground.com/#1UETWM#4_lt_/a_gt_ _lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt_but I can_lt_/span_gt_ _lt_span_gt_be wrong_lt_/span_gt__lt_span_gt_ _lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt_)_lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/div_gt__lt_br_gt__lt_div_gt__lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt_Of course_co_ this_lt_/span_gt_ _lt_span_gt_is because the_lt_/span_gt_ _lt_span_gt_parameters_lt_/span_gt_ of _lt_span_gt__lt_span_gt_BABYLON.Plane(a_co_ b_co_ c_co_ d) _lt_/span_gt__lt_/span_gt__lt_span_gt_are not_lt_/span_gt_ _lt_span_gt_good_lt_/span_gt__lt_span_gt_._lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/div_gt__lt_br_gt__lt_div_gt_ _lt_/div_gt__lt_br_gt__lt_div_gt__lt_span_gt__lt_span_gt_What I_lt_/span_gt_ _lt_span_gt_really wanted to_lt_/span_gt_ _lt_span_gt_know was_lt_/span_gt_ _lt_span_gt_if there was_lt_/span_gt_ _lt_span_gt_a way to calculate_lt_/span_gt_ a_co_ b and c._lt_/span_gt__lt_/div_gt__lt_br_gt__lt_div_gt__lt_span_gt__lt_span_gt_In fact_lt_/span_gt__lt_span_gt__co_ the user can_lt_/span_gt_ _lt_span_gt_rotate_lt_/span_gt_ _lt_span_gt_the mirrors_lt_/span_gt_ _lt_span_gt_along the axis_lt_/span_gt_ _lt_span_gt_he wants in_lt_/span_gt_ _lt_span_gt_my_lt_/span_gt_ _lt_span_gt_final application._lt_/span_gt_ _lt_span_gt_So I can_lt_/span_gt_ _lt_span_gt_not predict_lt_/span_gt_ _lt_span_gt_all combinations_lt_/span_gt_ _lt_span_gt_for a_co__lt_/span_gt_ _lt_span_gt_b and c_lt_/span_gt_ _lt_span_gt_without calculating_lt_/span_gt_ _lt_span_gt_them._lt_/span_gt__lt_/span_gt__lt_/div_gt__lt_br_gt__lt_/div_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"RaananW","Date":"2014-12-12T08:38:18Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_I was always wondering as well what the parameters of the plane should be. I could never find any documentation about that. Can anyone explain that?_lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt_Regarding the distortion_co_ I think this is more influenced by the mirror _qt_resolution_qt_ (size) you chose (512). Try 1024_co_ it will look better._lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Deltakosh","Date":"2014-12-12T15:45:43Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_A good idea could be to use BABYLON.PLane.FromPoints(p1_co_ p2_co_ p3) to get a plane and then extract (a_co_ b_co_ c_co_ d)_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Iwaa-kun","Date":"2014-12-14T01:02:30Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt__lt_span_gt__lt_span_gt_There is also_lt_/span_gt_ _lt_span_gt_a method_lt_/span_gt__lt_span_gt_ BABYLON.Plane.transform(transformation)_lt_/span_gt_ _lt_span_gt_but_lt_/span_gt_ _lt_span_gt_whatever I do_lt_/span_gt__lt_span_gt__co_ it_lt_/span_gt_ _lt_span_gt_has no effect_lt_/span_gt_ _lt_span_gt_on_lt_/span_gt_ _lt_span_gt_the reflection_lt_/span_gt__lt_span_gt_._lt_/span_gt__lt_/span_gt__lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_p_gt_ _lt_/p_gt__lt_blockquote data-ipsquote_eq__qt__qt_ class_eq__qt_ipsQuote_qt_ data-ipsquote-contentcommentid_eq__qt_64319_qt_ data-ipsquote-contenttype_eq__qt_forums_qt_ data-ipsquote-contentclass_eq__qt_forums_Topic_qt_ data-ipsquote-contentid_eq__qt_10995_qt_ data-ipsquote-username_eq__qt_Deltakosh_qt_ data-cite_eq__qt_Deltakosh_qt_ data-ipsquote-timestamp_eq__qt_1418399143_qt__gt__lt_div_gt__lt_div_gt__lt_p_gt_A good idea could be to use BABYLON.PLane.FromPoints(p1_co_ p2_co_ p3) to get a plane and then extract (a_co_ b_co_ c_co_ d)_lt_/p_gt__lt_/div_gt__lt_/div_gt__lt_/blockquote_gt__lt_p_gt__lt_span_gt__lt_span_gt_I have_lt_/span_gt_ _lt_span_gt_a result when I do not have a rotation because it is easy_lt_/span_gt__lt_span_gt_._lt_/span_gt_ _lt_span_gt__lt_span_gt_It_t_s_lt_/span_gt_ _lt_span_gt_a little more_lt_/span_gt_ _lt_span_gt_difficult when_lt_/span_gt_ _lt_span_gt_there are_lt_/span_gt_ transformations (scale_co_ translation_co_ rotation)_lt_span_gt_._lt_/span_gt__lt_/span_gt__lt_/span_gt__lt_/p_gt__lt_p_gt__lt_span_gt__lt_span_gt_So I looked for_lt_/span_gt_ _lt_span_gt_a way to get_lt_/span_gt_ _lt_span_gt_the_lt_/span_gt_ _lt_span_gt_coordinates of points_lt_/span_gt_ _lt_span_gt_using_lt_/span_gt_ _lt_span_gt_the method BABYLON.Mesh.getVerticesData(_qt_position_qt_)._lt_/span_gt_ _lt_span_gt_But_lt_/span_gt_ _lt_span_gt_this method returns_lt_/span_gt_ _lt_span_gt_the position of the_lt_/span_gt_ _lt_span_gt_points before_lt_/span_gt_ _lt_span_gt_the transformation_lt_/span_gt__lt_span_gt__co_ which is_lt_/span_gt_ not great _lt_span_gt_/_dd__lt_/span_gt__lt_/span_gt__lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Wingnut","Date":"2014-12-14T13:13:42Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tHi Iwaa-kun (and others)\n_lt_/p_gt_\n\n_lt_p_gt_\n\t   Iwaa-kun... I have been traveling with you... in your experiment...\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#K4R1M_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#K4R1M_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tI like my camera facing +z by default... just a personal preference.  Thus_co_ this demo is scene-rotated a bit different_co_ and I put angled mirrors on the sides_co_ but not on the top and bottom. Other than those differences_co_ it is the same scene.  And_co_ I have the same problems as you.  Right now I am working on plane4 which is my left-side plane.  I get the vertex array for plane4... in line 92_co_ but_co_ its not transformed.  (I agree with you completely.)  \n_lt_/p_gt_\n\n_lt_p_gt_\n\tMy demo has also shut off the light and is using emissiveColors on the materials_co_ instead.  Later_co_ I will change that back to using point lights_co_ because your demo looked really cool with those two point lights you had.\n_lt_/p_gt_\n\n_lt_p_gt_\n\tI think the transform problem happens because we are using clones_co_ and when we get the vertex data_co_ I think we are getting data from the father of the clones (plane1) which is the bottom plane in my demo.\n_lt_/p_gt_\n\n_lt_p_gt_\n\tAfter I get the array of vertex points (line 92)_co_ I create the plane in line 98 (using the fromArray method). Then in line 102... I attempt to transform the BABYLON.plane_co_ using the worldMatrix of plane4.  I don_t_t know if a _qt_worldMatrix_qt_ is a proper thing to transform a BABYLON.plane with.  I_t_m not very experienced with transforms.\n_lt_/p_gt_\n\n_lt_p_gt_\n\tIf you pan the camera far right_co_ you will see the red box reflection in plane4 (left plane) but it_t_s not correct.  Plane5 (the right side) is more correct_co_ but I got its a_co_b_co_c values... by guessing and _qt_trial and error_qt_ (not a very good policy).  _lt_img alt_eq__qt__dd_)_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt__lt_/p_gt_\n\n_lt_p_gt_\n\tMy top_co_ bottom_co_ and back planes seem to be reflecting correctly_co_ but they are not angled so they are easier.  _lt_img alt_eq__qt__dd_)_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt__lt_/p_gt_\n\n_lt_p_gt_\n\tI have not tried this yet_co_ but I would guess that _lt_strong_gt_IF_lt_/strong_gt_ we did _lt_strong_gt_NOT_lt_/strong_gt_ use clones for the planes_co_  we would get proper vertex data and then we could make better BABYLON.planes from that data.  Iwaa-kun_co_ feel free to use my demo and its code in ANY way that could help.  Report your discoveries in this thread_co_ please_co_ and I will report my discoveries here_co_ too.\n_lt_/p_gt_\n\n_lt_p_gt_\n\tWe are near to getting this correct.  I really like your _qt_mirror fun_qt_ demo_co_ and that_t_s why I needed to do experimenting with it and see if I could help-with the problem (and learn about 45 degree mirrors).  I want to see 45 degree angle mirrors_co_ or ANY angle mirrors_co_ work correctly and be easy to use for myself and others. \n_lt_/p_gt_\n\n_lt_p_gt_\n\tNotice I saved many versions of your previous playground.  _lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#1UETWM%2311_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#1UETWM#11_lt_/a_gt_  All the way up to version 11 now.  Sorry about that.  I should have started my own URL instead of saving so many versions of yours.  _lt_img alt_eq__qt__dd_)_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt_  Oh well_co_ you can save many versions of mine_co_ if you wish_co_ Iwaa-kun.\n_lt_/p_gt_\n\n_lt_p_gt_\n\tThanks everyone.\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Wingnut","Date":"2014-12-15T04:50:17Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tWhelp_co_ I made another one... without cloned mesh-planes... and it looks and works pretty well.  But the change from cloned mesh-planes to _t_created_t_ mesh-planes... made no difference in the trouble of _qt_transforming the BABYLON.Plane_qt_.  (that sounds like something that happens during an old west cattle drive)\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#29NQNG_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#29NQNG_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tBut oh my goodness_co_ what a bunch of BS I provided for myself.  I could NOT transform the BABYLON.Plane.  I think I tried everything plus 7 more things.  Most of the hell was with the 45 degree mirrors_co_ of course.  So_co_ I manually plotted 3 green boxes at 3 corners of the left and right mirrors.  I put the xyx coords of those 3 boxes in an array called _t_pile_t_ (once for plane4_co_ and again later for plane5). \n_lt_/p_gt_\n\n_lt_p_gt_\n\tThen I made the BABYLON.Plane from values in _t_pile_t_.  Using the right mirror (plane 5) as an example_dd_\n_lt_/p_gt_\n\n_lt_pre class_eq__qt_ipsCode prettyprint prettyprinted_qt__gt_\n_lt_span class_eq__qt_pln_qt__gt_mirrorMaterial5_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_reflectionTexture_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_mirrorPlane _lt_/span_gt__lt_span class_eq__qt_pun_qt__gt__eq__lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_ _lt_/span_gt__lt_span class_eq__qt_kwd_qt__gt_new_lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_ BABYLON_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span_gt_Plane_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span_gt_FromPoints_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_(_lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_\t_lt_/span_gt__lt_span class_eq__qt_kwd_qt__gt_new_lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_ BABYLON_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span_gt_Vector3_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_(_lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_pile_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_[_lt_/span_gt__lt_span class_eq__qt_lit_qt__gt_0_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_]_co__lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_ pile_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_[_lt_/span_gt__lt_span class_eq__qt_lit_qt__gt_1_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_]_co__lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_ pile_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_[_lt_/span_gt__lt_span class_eq__qt_lit_qt__gt_2_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_])_co__lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_  _lt_/span_gt__lt_span class_eq__qt_com_qt__gt_// location of a green box\tnew BABYLON.Vector3(pile[3]_co_ pile[4]_co_ pile[5])_co_  // location of a green box\tnew BABYLON.Vector3(pile[6]_co_ pile[7]_co_ pile[8])  // location of a green box)_sm__lt_/span_gt__lt_/pre_gt_\n\n_lt_p_gt_\n\tThose three Vector3 parameters... are the BABYLON.Plane... a_co_ b_co_ and c values. \n_lt_/p_gt_\n\n_lt_p_gt_\n\tFor plane5_co_ the points were placed into the _t_pile_t_ array in counter-clockwise order_co_ so the parameters above... needed to be in clockwise order.  Yep_co_ plotting-order applies to BABYLON.Plane-making.  It affects the plane_t_s _t_normal_t_.  (It affects the programmer_t_s _t_normal_t__co_ too.)  _lt_img alt_eq__qt__dd_o_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_ohmy.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/ohmy@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt__lt_/p_gt_\n\n_lt_p_gt_\n\tThen I guessed at the _t_d_t_ values_co_ using my eyes. Scientific_co_ eh?\n_lt_/p_gt_\n\n_lt_pre class_eq__qt_ipsCode prettyprint prettyprinted_qt__gt_\n_lt_span class_eq__qt_pln_qt__gt_mirrorMaterial5_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_reflectionTexture_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_mirrorPlane_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_._lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_d _lt_/span_gt__lt_span class_eq__qt_pun_qt__gt__eq__lt_/span_gt__lt_span class_eq__qt_pln_qt__gt_ _lt_/span_gt__lt_span class_eq__qt_pun_qt__gt_-_lt_/span_gt__lt_span class_eq__qt_lit_qt__gt_35_lt_/span_gt__lt_span class_eq__qt_pun_qt__gt__sm__lt_/span_gt__lt_/pre_gt_\n\n_lt_p_gt_\n\tChange the angle of either side mirror_co_ and it all goes to hell_co_ instantly.  (Because I manually plotted the coordinates to make the reflection plane).\n_lt_/p_gt_\n\n_lt_p_gt_\n\tBut_co_ it_t_s all working.  The _qt_depth into the mirror_qt_ of the box reflection... looks about right... on all 5 mirrors. \n_lt_/p_gt_\n\n_lt_p_gt_\n\tIt_t_s a crappy work-around_co_ and it only took two days of continuous work_co_ PLUS Iwaa-kun_t_s early work!  _lt_img alt_eq__qt__dd_)_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt__lt_/p_gt_\n\n_lt_p_gt_\n\t \n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Iwaa-kun","Date":"2014-12-16T09:51:42Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\t_lt_span_gt__lt_span_gt_I think I found_lt_/span_gt_ _lt_span_gt_something interesting_lt_/span_gt_ _lt_span_gt_and_lt_/span_gt_ _lt_span_gt_perfectly working_lt_/span_gt_ _lt_span_gt_the way I want_lt_/span_gt__lt_span_gt_._lt_/span_gt__lt_/span_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_span_gt__lt_span_gt_To_lt_/span_gt_ _lt_span_gt_make it work_lt_/span_gt__lt_span_gt__co_ it_lt_/span_gt_ _lt_span_gt_was necessary to know_lt_/span_gt_ 2 methods_dd__lt_/span_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_span_gt__lt_span_gt_BABYLON.Mesh.computeWorldMatrix(force)_lt_/span_gt__lt_/span_gt__lt_span_gt__lt_span_gt_ returns_lt_/span_gt_ _lt_span_gt_the_lt_/span_gt_ (right?) M_lt_span_gt_atrix object_lt_/span_gt_ _lt_span_gt_of the mesh._lt_/span_gt__lt_/span_gt_ _lt_span_gt__lt_span_gt_I tried_lt_/span_gt_ getPivotMatrix()_co_ getWorldMatrix()_co_ ... _lt_span_gt_but they_lt_/span_gt_ _lt_span_gt_did_lt_/span_gt_ _lt_span_gt_not affect_lt_/span_gt_ _lt_span_gt_the second method._lt_/span_gt__lt_/span_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_span_gt__lt_span_gt_BABYLON.Vector3.TransformCoordinatesToRef(vector3src_co_ matrix_co_ vector3dest)_lt_/span_gt__lt_/span_gt_ _lt_span_gt__lt_span_gt_returns the_lt_/span_gt_ _lt_span_gt_transformed point_lt_/span_gt_ _lt_span_gt_through_lt_/span_gt_ _lt_span_gt_the matrix._lt_/span_gt__lt_/span_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_span_gt__lt_span_gt__lt_span_gt__lt_span_gt_To find_lt_/span_gt_ _lt_span_gt_how to do_lt_/span_gt__lt_span_gt__co_ I had to_lt_/span_gt_ _lt_span_gt_study the source code_lt_/span_gt_ _lt_span_gt_of the method_lt_/span_gt__lt_/span_gt_ BABYLON.VertexData.transform()_lt_/span_gt__lt_/span_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_span_gt__lt_span_gt_Anyway_lt_/span_gt__lt_span_gt__co_ it works_lt_/span_gt_ _lt_span_gt_for me._lt_/span_gt__lt_/span_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#2EP7UB_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#2EP7UB_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#27K5IR_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#27K5IR_lt_/a_gt_\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Wingnut","Date":"2014-12-16T13:27:51Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tYou rock_co_ Iwaa-kun!  Good find_co_ and thanks for the demos showing your discovery!  Way good!\n_lt_/p_gt_\n\n_lt_p_gt_\n\tAND_co_ you changed it to FOR-loops_co_ so it is easy to add LOTS of mirrors!  Yay!   Fun ahead!  Thanks again!\n_lt_/p_gt_\n\n_lt_p_gt_\n\tI tried rotating the angled planes to see if the reflection planes rotated also.  But noooo. \n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#N5HVM_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#N5HVM_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tMaybe we can ask the BJS authors to put a .parent property on BABYLON.Plane   _lt_img alt_eq__qt__dd_)_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt_  This would sure make our experiments much easier.  We would build our BABYLON.Plane with (0_co_0_co_0_co_0)... and then set its .parent to our mesh-plane_co_ and boom_co_ done.  The B.Plane would then track its parent_co_ perfectly_co_ automatically.  Yum. (with an optional .parentOffset property so we could control reflection depth.)  Double yum! \n_lt_/p_gt_\n\n_lt_p_gt_\n\tAnd maybe a .reflectionDepthScale somewhere_co_ to make _qt_Objects are closer than they appear_qt_ mirror_co_ and its opposite.  _lt_img alt_eq__qt__dd_)_qt_ height_eq__qt_20_qt_ src_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/default_smile.png_qt_ srcset_eq__qt_http_dd_//www.html5gamedevs.com/uploads/emoticons/smile@2x.png 2x_qt_ width_eq__qt_20_qt_ data-emoticon_eq__qt__qt_ /_gt__lt_/p_gt_\n\n_lt_p_gt_\n\tYeah_co_ .parent!  But BABYLON.Plane isn_t_t really a mesh_co_ is it?  It_t_s more of a concept.  heh\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"},{"Owner":"Wingnut","Date":"2014-12-18T21:41:25Z","Content":"_lt_div class_eq__qt_mages_qt__gt_\n\t\t\t\n_lt_p_gt_\n\tAhh_co_ here we go.  I used Iwaa-kun_t_s getPointsTranformed() function... in the animate function... to make new BABYLON.Planes for the two animated reflection planes... every frame.  Just in case somebody still has interest in this answered thread_co_ here_t_s a demo... animated mirrors that reflect correctly.\n_lt_/p_gt_\n\n_lt_p_gt_\n\t_lt_a href_eq__qt_http_dd_//playground.babylonjs.com/#18LRHP_qt_ rel_eq__qt_external nofollow_qt__gt_http_dd_//playground.babylonjs.com/#18LRHP_lt_/a_gt_\n_lt_/p_gt_\n\n_lt_p_gt_\n\tSorry for hijacking your thread_co_ Iwaa-kun_co_ but this was interesting to me_co_ and informative for others (maybe).  So_co_ I wanted to keep fleshing this subject until my nipples got properly erect.  Animated angled mirrors... gotta love it.  Not all that easy to accomplish.  Party on!\n_lt_/p_gt_\n\n\n\t\t\t\n\t\t_lt_/div_gt_\n\n\t\t_lt_div class_eq__qt_ipsI_qt__gt__lt_/div_gt__lt_/div_gt_"}]