Answer
You can use the new RandomPoint- function to sample points from a sphere and use the second argument of Text to position some text in 3D. Text will automatically make the string face towards the viewer/camera for you.
pts = RandomPoint[Sphere[{0, 0, 0}], 100];
Text["test", #] & /@ pts // Graphics3D[#, SphericalRegion -> True, Boxed -> False] &
Another approach is instead of rotating the entire graphic (as done above) to rotate the points themselves via RotationTransform. This enables the use of coordinate dependent color and size. An appropriate transformation could be
r[angle_?NumericQ, pivot : {_, _}] := RotationTransform[angle Degree, pivot];
and can be used as follows to archive something closer to what you are looking for with color and size scaling done in respect to the y-coordinate
Graphics3D[(Style[Text["test", #], FontSize -> 14 - 5*(#[[2]] + 1),
FontColor -> Blend[{Black, White}, #[[2]]]] & /@
r[0, {{0, 0.2, 1}, {1, 0, 0}}] /@ pts), BoxRatios -> {1, 1, 1},
Boxed -> True, Axes-> True, AxesLabel -> {"x", "y", "z"}]
This can be animated for instance like this
Animate[Graphics3D[(Style[Text["test", #],
FontSize -> 14 - 5*(#[[2]] + 1),
FontColor -> Blend[{Black, White}, #[[2]]]] & /@
r[angle, {{0, 0, 1}, {0.2, -1, 0}}] /@ pts),
BoxRatios -> {1, 1, 1}, SphericalRegion -> True, Boxed -> False,
ViewPoint -> Front], {angle, 0, 360}]
To archive your desired look you might have to play around a bit with the color- and size scaling




Comments
Post a Comment