4
$\begingroup$

I am trying to render a bone structure in color in Mathematica 10.3, but none of the obvious methods seem to work:

  • Graphics3D[{Blue, Entity["AnatomicalStructure", "LeftFoot"]["Graphics3D"][[1]]}]

  • Graphics3D[{Blue, (Entity["AnatomicalStructure", "LeftFoot"][ "Graphics3D"])[[1]]}]

  • Graphics3D[{Lighting -> {{"Point", Blue, {0, 3, 5}}}, (Entity["AnatomicalStructure", "LeftFoot"][ "Graphics3D"])[[1]]}]

...and numerous Directives and such.

How do I color such a 3D model?

enter image description here

$\endgroup$
6
$\begingroup$

If you peer at the InputForm[] of the result, you'll quickly find that the coloring scheme used for bones is something like this:

Graphics3D[{Lighting -> {{"Ambient", GrayLevel[0.35]},
                         {"Directional", GrayLevel[0.2], ImageScaled[{2, 0, 2}]},
                         {"Directional", GrayLevel[0.2], ImageScaled[{2, 2, 2}]},
                         {"Directional", GrayLevel[0.2], ImageScaled[{0, 2, 2}]}},
            Specularity[GrayLevel[0.5], 1.5], RGBColor[0.88, 0.847, 0.748],
            Sphere[]}]

"bone"-colored sphere

which is why the bones are not affected by your coloring attempts; these directives come directly before the primitives they're coloring.


On the other hand, the bones themselves are GraphicsComplex[] objects, so one can just extract them before coloring:

leftFootBones = Entity["AnatomicalStructure", "LeftFoot"]["Graphics3D"];

Graphics3D[{ColorData["Legacy", "Turquoise"], EdgeForm[], 
            Cases[leftFootBones, _GraphicsComplex, ∞]}, Lighting -> "Neutral"]

that was a weird color choice, admittedly.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.