EnableShadows=True, ShadowMapSize=1024, ShadowOffset=0.0005, ShadowCascadedSplits=[0.1, 4, 7, 20], ShadowMaxDistance=30, ShadowNearClippingInSunDirection=100, ShadowFarClippingInSunDirection=100, Brightness=3, Transform=avango.gua.make_rot_mat(50, 0, 1, 0) * avango.gua.make_rot_mat(-40.0, 1.0, 0.0, 0.0)) size = av.Vec2ui(1024, 768) window = av.nodes.GlfwWindow(Size=size, LeftResolution=size) av.register_window("window", window) cam = av.nodes.CameraNode(LeftScreenPath="/screen", SceneGraph="scenegraph", Resolution=size, OutputWindowName="window", Transform=av.make_trans_mat(0.0, 1.0, 3.0)) res_pass = av.nodes.ResolvePassDescription() res_pass.EnableSSAO.value = True res_pass.SSAOIntensity.value = 4.0 res_pass.SSAOFalloff.value = 10.0 res_pass.SSAORadius.value = 7.0 res_pass.EnvironmentLightingColor.value = av.Color(0.02, 0.02, 0.02) res_pass.ToneMappingMode.value = av.ToneMappingMode.UNCHARTED
from bpy.app.handlers import persistent from mathutils import Matrix WIN_SIZE = av.Vec2ui(1024, 768) # it is currently impossible to close windows in guacamole. Therefore we create # one global window, which we will use for all previews. def texture_filepath(texname): return bpy.data.textures[texname].image.filepath g_window = av.nodes.HeadlessSurface( Size=WIN_SIZE, LeftResolution=WIN_SIZE ) av.register_window("blender_window", g_window) g_graph = av.nodes.SceneGraph(Name="scenegraph") g_viewer = av.nodes.BlenderViewer() g_viewer.Window.value = g_window g_viewer.SceneGraphs.value = [g_graph] g_loader = av.nodes.TriMeshLoader() g_cached_objects = {} def matrix_to_list(matrix): """Convert a blender matrix to a list.""" return sum(list(list(x) for x in matrix), [])
def start(): graph = av.nodes.SceneGraph(Name="scene") loader = av.nodes.TriMeshLoader() fps_size = av.Vec2(170, 55) fps = av.gui.nodes.GuiResourceNode() fps.TextureName.value = "fps" fps.URL.value = "asset://gua/data/html/fps.html" fps.Size.value = fps_size fps_quad = av.nodes.TexturedScreenSpaceQuadNode(Name="fps_quad", Texture="fps", Width=int(fps_size.x), Height=int(fps_size.y), Anchor=av.Vec2(1.0, 1.0)) graph.Root.value.Children.value.append(fps_quad) fallback_mat = av.create_material(av.MaterialCapabilities.COLOR_VALUE | av.MaterialCapabilities.ROUGHNESS_VALUE) fallback_mat.set_uniform("Roughness", 0.6) for x in range(0, CUBE_COUNT_X): for y in range(0, CUBE_COUNT_Y): for z in range(0, CUBE_COUNT_Z): new_cube = loader.create_geometry_from_file( "cube" + str(x) + str(y) + str(z), "data/objects/monkey.obj", fallback_mat, av.LoaderFlags.DEFAULTS) new_cube.Transform.value = av.make_trans_mat( x * 2, y * 2, z * 2) * av.make_scale_mat(0.3, 0.3, 0.3) graph.Root.value.Children.value.append(new_cube) new_cube.ShadowMode.value = 1 sun_light = av.nodes.LightNode(Name="sun_light", Type=av.LightType.SUN, Color=av.Color(1.0, 1.0, 0.7), EnableShadows=True, ShadowMapSize=1024, ShadowOffset=0.0005, ShadowCascadedSplits=[0.1, 4, 7, 20], ShadowMaxDistance=30, ShadowNearClippingInSunDirection=100, ShadowFarClippingInSunDirection=100, Brightness=4) graph.Root.value.Children.value.append(sun_light) floor = loader.create_geometry_from_file("floor", "data/objects/plane.obj", fallback_mat, av.LoaderFlags.DEFAULTS) floor.Transform.value = av.make_scale_mat( 200, 1, 200) * av.make_trans_mat(-0.5, -0.2, -0.5) floor.ShadowMode.value = 0 graph.Root.value.Children.value.append(floor) width = 1920 height = int(width * 9.0 / 16.0) size = av.Vec2ui(width, height) screen = av.nodes.ScreenNode(Name="screen", Width=4.8, Height=2.7, Transform=av.make_trans_mat(0.0, 0.0, -2.5)) camera = av.nodes.CameraNode(Name="cam", LeftScreenPath="/cam/screen", RightScreenPath="/cam/screen", SceneGraph="scene", Resolution=size, OutputWindowName="window", EyeDistance=0.2, EnableStereo=False, Children=[screen], Transform=av.make_trans_mat(0.0, 0.0, 7.0)) res_pass = av.nodes.ResolvePassDescription() res_pass.EnableSSAO.value = True res_pass.SSAOIntensity.value = 3.0 res_pass.SSAOFalloff.value = 20.0 res_pass.SSAORadius.value = 10.0 res_pass.EnvironmentLightingTexture.value = "day_skymap" res_pass.AlternativeEnvironmentLightingTexture.value = "night_skymap" res_pass.EnvironmentLightingMode.value = av.EnvironmentLightingMode.CUBEMAP res_pass.ToneMappingMode.value = av.ToneMappingMode.UNCHARTED res_pass.Exposure.value = 1.0 res_pass.VignetteColor.value = av.Vec4(0, 0, 0, 0.7) res_pass.VignetteCoverage.value = 0.0 res_pass.EnableFog.value = True res_pass.FogStart.value = 30 res_pass.FogEnd.value = 100 res_pass.BackgroundMode.value = av.BackgroundMode.CUBEMAP_TEXTURE res_pass.BackgroundTexture.value = "day_skymap" res_pass.AlternativeBackgroundTexture.value = "night_skymap" sky_pass = av.nodes.SkyMapPassDescription(OutputTextureName="day_skymap") av.create_texture_cube( "night_skymap", "data/textures/stars/purple-nebula/purple-nebula_right1.jpg", "data/textures/stars/purple-nebula/purple-nebula_left2.jpg", "data/textures/stars/purple-nebula/purple-nebula_bottom4.jpg", "data/textures/stars/purple-nebula/purple-nebula_top3.jpg", "data/textures/stars/purple-nebula/purple-nebula_front5.jpg", "data/textures/stars/purple-nebula/purple-nebula_back6.jpg") pipeline_description = av.nodes.PipelineDescription(Passes=[ sky_pass, av.nodes.TriMeshPassDescription( ), av.nodes.LightVisibilityPassDescription( ), res_pass, av.nodes.TexturedScreenSpaceQuadPassDescription() ]) camera.PipelineDescription.value = pipeline_description graph.Root.value.Children.value.append(camera) window = av.nodes.Window(Size=size, Title="shadows", LeftResolution=size, RightResolution=size, EnableVsync=False, StereoMode=av.StereoMode.MONO) av.register_window("window", window) navigator = examples_common.navigator.Navigator() navigator.StartLocation.value = camera.Transform.value.get_translate() navigator.OutTransform.connect_from(camera.Transform) navigator.RotationSpeed.value = 0.2 navigator.MotionSpeed.value = 0.04 camera.Transform.connect_from(navigator.OutTransform) viewer = av.nodes.Viewer() viewer.SceneGraphs.value = [graph] viewer.Windows.value = [window] timer = avango.nodes.TimeSensor() fps_updater = FPSUpdater(FPSResource=fps, Window=window, Viewer=viewer) fps_updater.TimeIn.connect_from(timer.Time) sun_updater = SunUpdater(TimeScale=3500) sun_updater.TimeIn.connect_from(timer.Time) sun_light.Transform.connect_from(sun_updater.MatrixOut) sun_light.Color.connect_from(sun_updater.SunColorOut) sky_pass.LightDirection.connect_from(sun_updater.DirectionOut) sky_pass.GroundColor.connect_from(sun_updater.GroundColorOut) res_pass.BackgroundTextureBlendFactor.connect_from( sun_updater.BlendFactorOut) res_pass.EnvironmentLightingTextureBlendFactor.connect_from( sun_updater.BlendFactorOut) guaVE = GuaVE() guaVE.start(locals(), globals()) viewer.run()
EnableShadows=True, ShadowMapSize=1024, ShadowOffset=0.0005, ShadowCascadedSplits=[0.1, 4, 7, 20], ShadowMaxDistance=30, ShadowNearClippingInSunDirection=100, ShadowFarClippingInSunDirection=100, Brightness=3, Transform=avango.gua.make_rot_mat(50, 0, 1, 0) * avango.gua.make_rot_mat( -40.0, 1.0, 0.0, 0.0)) size = av.Vec2ui(1024, 768) window = av.nodes.GlfwWindow(Size=size, LeftResolution=size) av.register_window("window", window) cam = av.nodes.CameraNode(LeftScreenPath="/screen", SceneGraph="scenegraph", Resolution=size, OutputWindowName="window", Transform=av.make_trans_mat(0.0, 1.0, 3.0)) res_pass = av.nodes.ResolvePassDescription() res_pass.EnableSSAO.value = True res_pass.SSAOIntensity.value = 4.0 res_pass.SSAOFalloff.value = 10.0 res_pass.SSAORadius.value = 7.0 res_pass.EnvironmentLightingColor.value = av.Color(0.02, 0.02, 0.02) res_pass.ToneMappingMode.value = av.ToneMappingMode.UNCHARTED
import bpy from bpy.app.handlers import persistent from mathutils import Matrix WIN_SIZE = av.Vec2ui(1024, 768) # it is currently impossible to close windows in guacamole. Therefore we create # one global window, which we will use for all previews. def texture_filepath(texname): return bpy.data.textures[texname].image.filepath g_window = av.nodes.HeadlessSurface(Size=WIN_SIZE, LeftResolution=WIN_SIZE) av.register_window("blender_window", g_window) g_graph = av.nodes.SceneGraph(Name="scenegraph") g_viewer = av.nodes.BlenderViewer() g_viewer.Window.value = g_window g_viewer.SceneGraphs.value = [g_graph] g_loader = av.nodes.TriMeshLoader() g_cached_objects = {} def matrix_to_list(matrix): """Convert a blender matrix to a list.""" return sum(list(list(x) for x in matrix), [])