renderer_sun.py (3763B)
1 #Embedded file name: C:\BuildAgent\work\20d73f1b24eed06e\eve\release\V24.01\packages\iconrendering2\renderers\renderer_sun.py 2 from __future__ import absolute_import 3 from .utils_scene import * 4 from .utils_renderer import RenderToBitmapFromScene 5 from .renderer_base import IconRenderer 6 from iconrendering2.const import Language 7 from platformtools.compatibility.exposure.artpipeline.tools.utils.PlanetUtils import BuildPlanet, ConvertPlanetToEffectRoot 8 9 class SunIconRenderer(IconRenderer): 10 11 def __init__(self, objectPath, language = Language.ENGLISH): 12 super(SunIconRenderer, self).__init__(language) 13 self._objectPath = objectPath 14 self._scene = None 15 self._object = None 16 self._shaderModel = trinity.GetShaderModel() 17 18 def __str__(self): 19 return 'Sun Icon Renderer <%s>' % hex(id(self)) 20 21 def _PrepareRender(self): 22 self._shaderModel = trinity.GetShaderModel() 23 trinity.SetShaderModel('SM_3_0_DEPTH') 24 self._scene = trinity.EveSpaceScene() 25 self._scene.postprocess = trinity.Tr2PostProcess2() 26 self._scene.postprocess.dynamicExposure = trinity.Tr2PPDynamicExposureEffect() 27 self._scene.postprocess.dynamicExposure.influence = 0.0 28 self._scene.postprocess.dynamicExposure.adjustment = -0.5 29 self._object = BuildPlanet(self._objectPath, None, None, 0) 30 self._initialScale = None 31 if self._object: 32 self._InitializeObject() 33 self._scene.objects.append(self._object) 34 self._object.FreezeHighDetailMesh() 35 FreezeTime() 36 37 def _FinishRender(self): 38 del self._object 39 self._object = None 40 del self._scene 41 self._scene = None 42 trinity.SetShaderModel(self._shaderModel) 43 44 def _Render(self, renderInfo): 45 if not self._scene or not self._object or not renderInfo: 46 return 47 view, projection = self._PrepareSceneForRender() 48 self._PrepareObjectForRender(renderInfo) 49 self._DoRendering(renderInfo, view, projection) 50 51 def _DoRendering(self, renderInfo, view, projection): 52 bitmap = RenderToBitmapFromScene(renderInfo, self._scene, view, projection, postProcessingQuality=2) 53 bitmap.Save(renderInfo.outputPath) 54 55 def _InitializeObject(self): 56 if hasattr(self._object, 'curveSets'): 57 self._object.curveSets.removeAt(-1) 58 self._object.scaling = (20, 20, 20) 59 self._initialScale = self._object.scaling 60 61 def _PrepareSceneForRender(self): 62 self._scene.sunDirection = (-0.5, -0.5, -0.6) 63 projection = trinity.TriProjection() 64 projection.PerspectiveFov(GETPHOTO_FOV, 1.0, 0.0001, 1000) 65 view = trinity.TriView() 66 view.transform = ((0.9110742211341858, 0.2911122441291809, 0.2918860614299774, 0.0), 67 (0.0, 0.7080447673797607, -0.7061676383018494, 0.0), 68 (-0.41224241256713867, 0.6433711051940918, 0.6450812816619873, 0.0), 69 (4.290776252746582, -4.666899681091309, -13.901455879211426, 1.0)) 70 return (view, projection) 71 72 def _PrepareObjectForRender(self, renderInfo): 73 if renderInfo.metadata: 74 controllerVariables = renderInfo.metadata.get('stateControllerVariables', []) 75 if len(controllerVariables) > 0 and hasattr(self._object, 'SetControllerVariable'): 76 for var, value in controllerVariables.iteritems(): 77 self._object.SetControllerVariable(var, value) 78 79 self._object.StartControllers() 80 scaleFactor = renderInfo.metadata.get('scaleFactor', 1.0) 81 if scaleFactor != 1.0: 82 self._object.scaling = (self._initialScale[0] * scaleFactor, self._initialScale[1] * scaleFactor, self._initialScale[2] * scaleFactor)