Update: This bug has been fixed
The bug has been fixed and the code below is working in $Version=12.1.1 for Microsoft Windows (64-bit) (June 19, 2020).
Original Question
I would like to illustrate a sequence of translations and rotations relative to the initial coordinate system simultaneously with multiple views using Manipulate. I discovered that there are some transformations that do not play well together with untransformed objects with Show.
Are there some settings or perhaps a better structure to make the process more robust?
I am using Mathematica 12.0 ("12.0.0 for Microsoft Windows (64-bit) (April 6, 2019)") and I have the same results on two different Windows 7 and 10 machines.
Here is the code for my toy model.
(* Create Transform Function *)
(* Unit Vectors *)
{ex, ey, ez} = UnitVector[3, #] & /@ {1, 2, 3};
(* Set up Transform Function*)
m = IdentityMatrix[4];
(* Rotation Part *)
m[[1 ;; 3, 1 ;; 3]] =
RotationMatrix[c, ey].EulerMatrix[{a, b, 0}, {2, 1, 2}];
(* Translation Part *)
m[[1 ;; 3, -1]] = {r Cos[-a], y, r Sin[-a]};
transform[a_, b_, c_, r_, y_] = TransformationFunction[m];
(* Create base graphics for axes and reference geo *)
axes = {Red, Arrow[{{0, 0, 0}, {#, 0, 0}}], Green,
Arrow[{{0, 0, 0}, {0, #, 0}}], Blue,
Arrow[{{0, 0, 0}, {0, 0, #}}]} &;
sphereaxes = {Dashed}~Join~axes[#]~
Join~{White, Specularity[White, 50], Opacity[0.1],
Sphere[{0, 0, 0}, #]} &;
cyl = {White, Specularity[White, 50], Opacity[0.1],
Cylinder[{{0, 0, 0}, {0, 2, 0}}, 1]};
(* Scene objects *)
refgr = Graphics3D[axes[1/4]~Join~cyl, Boxed -> False,
ViewProjection -> "Orthographic"];
movgeo = sphereaxes[1/3];
The Manipulate code:
(* Create Slider Model *)
Manipulate[
With[{
movgeotr =
Graphics3D@
GeometricTransformation[movgeo, transform[a, b, c, x, y]]},
GraphicsGrid[{
{Show[{refgr, movgeotr}, ViewPoint -> Back,
ViewVertical -> {0, 0, -1}],
Show[{refgr, movgeotr}, ViewPoint -> {0, 0, Infinity}]},
{Show[{refgr, movgeotr}, ViewPoint -> {-Infinity, 0, 0},
ViewVertical -> {-1, 1, 0}],
Show[{refgr, movgeotr},
ViewPoint -> {Infinity, Infinity, Infinity},
ViewVertical -> {0, 1, 0}]}
}, Dividers -> Center, Frame -> All, Spacings -> Scaled[0.25],
ImageSize -> Medium]
],
{x, 0, 1}, {y, 0, 1}, {a, 0, 360 Degree}, {b, 0, 180 Degree}, {c, 0,
360 Degree}]
When I execute the Manipulate expression, there are certain conditions that cause most views to be poorly displayed as shown below:
A minimal case to produce the effect is shown below:
Graphics3D@GeometricTransformation[movgeo, transform[0, 0, 0, 0.4, 0]]
Show[{refgr,
Graphics3D@
GeometricTransformation[movgeo, transform[0, 0, 0, 0.4, 0]]},
ViewPoint -> {0, 0, Infinity}]
The transformed object displays with Graphics3D, but will not display when combined with the untransformed object in Show. Any advice is appreciated.


