NovaBryan/EVE_Dump
Log | Files | 📦 下载最新源码 (.zip) | Refs | README

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)