コード例 #1
0
    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
コード例 #2
0
ファイル: engine.py プロジェクト: el-josho/avango
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), [])
コード例 #3
0
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()
コード例 #4
0
ファイル: main.py プロジェクト: scholli/avango
    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
コード例 #5
0
ファイル: engine.py プロジェクト: wobakj/avango
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), [])