Hindi pinapansin ng format ng pag-export na 'POV' ni Mathematica ang ColorFunction
Mathematicas Povexport Format Ignores Colorfunction
Solusyon:
Tulad mo, wala akong nakitang mga kulay sa output * .pov file. Kinikilala ni Mathematica ang pov extension, ngunitI-export ang ['povtest.pov', pplot3D] ay naglalabas ng lahat ng mga tatsulok na bagay na may puting kulay:
pigment {color rgb}.
Kinuha ko ang diskarte ng brute-force at decomposed ang 3D plot sa mga vertex, triangles, at kulay.
Tukuyin ang balangkas ng 3D.
pplot3D = ParametricPlot3D [{Cos [p] Sin [t], Sin [p] Sin [t], Cos [t]}, {p, 0, 2 [Pi]}, {t, 0, [Pi] }, PlotPoints-> 150, Mesh-> Wala, ColorFunction-> Function [{x, y, z, p, t}, Hue [Sin [6 p] Sin [6 t]]], ColorFunctionScaling-> Mali];Hanapin ang mga vertex, triangles, at vertex na kulay.
mga vertex = pplot3D [[1, 1]]; triangles = pplot3D [[1, 2, 1, 1, 2, 1, 1, 1]]; mga kulay = Chop [Map [ColorConvert [#, 'RGB'] &, pplot3D [[1, 3, 2]]]];Tukuyin ang isang function na auxillary na bumubuo ng isang string mula sa triple ng mga totoong numero, na iniiwasan ang mga exponents. Ang pagkakasunud-sunod ng tatlong mga sangkap na {x, y, z} ay inililipat upang tumugma sa POVRay na kombensyon ng {x, z, y}.
AccString [x_List]: = StringDrop [StringJoin [Map [ToString [AccountingForm [#, NumberSigns -> {'-', ''}]] ',' &, x [[{1,3,2}]]]] , -1]Tukuyin ang isang pagpapaandar upang isulat ang mga bagay na tatsulok na POVRay.
POVtriangle [ind_List]: = StringJoin [{'tatsulok {,, pigment {color rgb}}'}]I-export ang mga triangles sa isang file na isama ang POVRay.
I-export ang ['povtest.inc', Mapa [POVtriangle, triangles], 'Mga Linya']Lumikha ng file povtest.pov file gamit ang camera at ilaw, at isama ang povtest.inc.
camera {location anggulo 3 pataas y * image_height kanan x * image_width look_at} light_source {color rgb 2 * shadowless} light_source {color rgb 2 * shadowless} # isama ang 'povtest.inc'Ang vertex normals ay matatagpuan sapplot3D [[1,4,2]], at maaaring magamit upang mabuo ang POVRay makinis na mga tatsulok. Ang iba pang mga pagpipilian ay matatagpuan sapplot3D [[2]]. 
I-convert ang GraphicsComplex sa mesh2
Upang mapanatili ang kulay at kinis ng 3D plot, maaari naming kunin ang object na GraphicsComplex sa Mathematica at pagkatapos ay gawing isang mesh2 na bagay sa POVRay. Dahil ang dalawang bagay na ito ay may magkatulad na istraktura, ang conversion ay medyo tuwid na pasulong.
Ang bentahe ng paggamit ng mesh2 na object ay na isasabay nito ang data (at kulay) mula sa vertex at ng norm vector nito at makagawa ng isang makinis na kulay na ibabaw.
Ang isang 3D graphics sa Mathematica ay karaniwang itinatayo mula sa aObject ng GraphicsComplex At angAng graphic object ay may istraktura tulad ng:
GraphicsComplex [vertex, polygons, VertexColors-> vertexColors, VertexNormals-> vertexNormals]Ang istrakturang ito ay talagang katulad sa mesh2 na bagay sa POVRay. Ang isang karaniwang mesh2 na bagay sa POVRay ay may sumusunod na istraktura:
mesh2 {vertex_vectors {...} normal_vectors {...} face_indices {...}}Ang pag-convert mula sa GraphicsComplex sa mesh2 ay madaling magawa sa ilang mga manipulasyong string.
Ilang halimbawa
Narito ang ilang mga halimbawa ng render ng POVRay na 3D graphics na may kulay
p1 = ParametricPlot3D [{Cos [p] Sin [t], Sin [p] Sin [t], Cos [t]}, {p, 0, 2 π}, {t, 0, π}, PlotPoints -> 150 , Mesh -> Wala, ColorFunction -> Function [{x, y, z, p, t}, Hue [Sin [6 p] Sin [6 t]]], ColorFunctionScaling -> Mali, ImageSize -> 300]; p2 = SphericalPlot3D [[protektado ng email] @SphericalHarmonicY [5, 2, θ, ϕ], {θ, 0, π}, ϕ ϕ, 0, 2 π}, Mesh -> Wala, ColorFunction -> Function [{x, y, z, θ, ϕ, r}, Suriin ang [[protektado ng email] [[protektado ng email] [5, 2, θ, ϕ], {-π, π}]], ColorFunctionScaling -> Mali, PlotPoints -> 50 , ImageSize -> 300]; p3 = SphericalPlot3D [1 + Sin [5 ϕ] Sin [10 θ] / 10, {θ, 0, π}, {ϕ, 0, 2 π}, ColorFunction -> (ColorData ['GreenPinkTones'] [# 6] &), Mesh -> Wala, PlotPoints -> 50, Naka-box -> Mali, Axes -> Mali, ImageSize -> 300];i-export at i-render sa POVRay
I-transpose [{#, Ipakita ang [POVRayRender [#, ImageSize -> {400, 300}], ImageSize -> 300]} & / @ {p1, p2, p3}] // Grid 
Ang package
AngAng pagpapaandar ng POVRayRender ay nagmula saPakete ng POVRayRender na maaaring ma-download mula sa github repo.