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