ya2 · news · projects · code · about

background
[pmachines.git] / pmachines / pmachines.py
index 2a3fa46493322059bd95ae78aec333836b43f818..08669ee24c683c91a3c4441b0ced75f8bb827b2a 100755 (executable)
@@ -1,10 +1,14 @@
 import argparse
+import simplepbr
+import gltf
 from sys import platform, argv
 from logging import info
 from os.path import exists
 from os import makedirs
-from panda3d.core import Filename, load_prc_file_data
+from panda3d.core import Filename, load_prc_file_data, AmbientLight, \
+    DirectionalLight, AntialiasAttrib
 from direct.showbase.ShowBase import ShowBase
+from pmachines.items.background import Background
 
 
 class Pmachines:
@@ -20,9 +24,44 @@ class Pmachines:
         self.version = args.version
         if args.update:
             return
+        self._set_camera()
+        self._set_lights()
+        Background()
+
+    def _set_camera(self):
+        base.camera.set_pos(0, -20, 0)
+        base.camera.look_at(0, 0, 0)
+        self.base.disable_mouse()
+
+    def _set_lights(self):
+        alight = AmbientLight('alight')  # for ao
+        alight.setColor((.4, .4, .4, 1))
+        alnp = render.attachNewNode(alight)
+        render.setLight(alnp)
+
+        directionalLight = DirectionalLight('directionalLight')
+        directionalLightNP = render.attachNewNode(directionalLight)
+        directionalLightNP.setHpr(315, -60, 0)
+        directionalLight.setColor((3.6, 3.6, 3.6, 1))
+        render.setLight(directionalLightNP)
+
+        directionalLight = DirectionalLight('directionalLight')
+        directionalLightNP = render.attachNewNode(directionalLight)
+        directionalLightNP.setHpr(195, -30, 0)
+        directionalLight.setColor((.4, .4, .4, 1))
+        render.setLight(directionalLightNP)
+
+        directionalLight = DirectionalLight('directionalLight')
+        directionalLightNP = render.attachNewNode(directionalLight)
+        directionalLightNP.setHpr(75, -30, 0)
+        directionalLight.setColor((.3, .3, .3, 1))
+        render.setLight(directionalLightNP)
 
     def _configure(self):
         load_prc_file_data('', 'window-title pmachines')
+        load_prc_file_data('', 'framebuffer-multisample 1')
+        load_prc_file_data('', 'multisamples 4')
+        load_prc_file_data('', 'framebuffer-srgb true')
 
     def _parse_args(self):
         parser = argparse.ArgumentParser()
@@ -43,3 +82,11 @@ class Pmachines:
                 data_path = home + '/.wine/drive_' + data_path[1:]
             info('creating dirs: %s' % data_path)
             makedirs(data_path, exist_ok=True)
+        gltf.patch_loader(base.loader)
+        pipeline = simplepbr.init(
+            use_normal_maps=True,
+            use_emission_maps=False,
+            use_occlusion_maps=True,
+            msaa_samples=4)
+        render.setAntialias(AntialiasAttrib.MAuto)
+        base.set_background_color(0, 0, 0, 1)