Skip to content

Commit 1aaa93c

Browse files
committed
add sun positioning algorithm
1 parent 964c5a9 commit 1aaa93c

File tree

6 files changed

+633
-0
lines changed

6 files changed

+633
-0
lines changed

src/appleseed.python/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ set (sources
106106
bindshadercompiler.cpp
107107
bindshadergroup.cpp
108108
bindshaderquery.cpp
109+
bindsunpositioner.cpp
109110
bindsurfaceshader.cpp
110111
bindtexture.cpp
111112
bindtilecallback.cpp
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
2+
//
3+
// This source file is part of appleseed.
4+
// Visit https://appleseedhq.net/ for additional information and resources.
5+
//
6+
// This software is released under the MIT license.
7+
//
8+
// Copyright (c) 2020 Joao Marcos Costa, The appleseedhq Organization
9+
//
10+
// Permission is hereby granted, free of charge, to any person obtaining a copy
11+
// of this software and associated documentation files (the "Software"), to deal
12+
// in the Software without restriction, including without limitation the rights
13+
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
14+
// copies of the Software, and to permit persons to whom the Software is
15+
// furnished to do so, subject to the following conditions:
16+
//
17+
// The above copyright notice and this permission notice shall be included in
18+
// all copies or substantial portions of the Software.
19+
//
20+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
21+
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
22+
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
23+
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
24+
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
25+
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
26+
// THE SOFTWARE.
27+
//
28+
29+
#pragma once
30+
31+
// appleseed.python headers.
32+
#include "bindentitycontainers.h"
33+
#include "dict2dict.h"
34+
#include "metadata.h"
35+
36+
// appleseed.renderer header.
37+
#include "renderer/utility/solarpositionalgorithm.h"
38+
39+
// appleseed.foundation headers.
40+
#include "foundation/platform/python.h"
41+
42+
namespace bpy = boost::python;
43+
using namespace foundation;
44+
using namespace renderer;
45+
46+
namespace
47+
{
48+
auto_release_ptr<SunPositioner> create_sun_positioner(const bpy::dict& params)
49+
{
50+
return SunPositionerFactory::create("Sun Positioner", bpy_dict_to_param_array(params));
51+
}
52+
53+
void compute_sun_position(SunPositioner* sun_position)
54+
{
55+
sun_position->fetch_data();
56+
sun_position->compute_sun_position();
57+
}
58+
59+
bpy::list get_input_metadata()
60+
{
61+
return dictionary_array_to_bpy_list(SunPositionerFactory::get_input_metadata());
62+
}
63+
}
64+
65+
void bind_sun_positioner()
66+
{
67+
bpy::class_<SunPositioner, auto_release_ptr<SunPositioner>, bpy::bases<Entity>, boost::noncopyable>("SunPositioner", bpy::no_init)
68+
.def("get_input_metadata", get_input_metadata).staticmethod("get_input_metadata")
69+
.def("__init__", bpy::make_constructor(create_sun_positioner))
70+
.def("compute_sun_position", compute_sun_position)
71+
72+
.def("get_zenith", &SunPositioner::get_zenith)
73+
.def("get_azimuth", &SunPositioner::get_azimuth)
74+
.def("get_solar_noon", &SunPositioner::get_solar_noon)
75+
.def("get_sunrise", &SunPositioner::get_sunrise)
76+
.def("get_sunset", &SunPositioner::get_sunset);
77+
}

src/appleseed.python/module.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ void bind_scene();
6666
void bind_shader_compiler();
6767
void bind_shader_group();
6868
void bind_shader_query();
69+
void bind_sun_positioner();
6970
void bind_surface_shader();
7071
void bind_texture();
7172
void bind_tile_callback();
@@ -132,6 +133,7 @@ extern "C" void bind_appleseed_python_classes()
132133
bind_fresnel();
133134
bind_display();
134135
bind_project();
136+
bind_sun_positioner();
135137

136138
bind_renderer_controller();
137139
bind_tile_callback();

src/appleseed/CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2187,6 +2187,8 @@ set (renderer_utility_sources
21872187
renderer/utility/settingsparsing.cpp
21882188
renderer/utility/settingsparsing.h
21892189
renderer/utility/shadowterminator.h
2190+
renderer/utility/solarpositionalgorithm.cpp
2191+
renderer/utility/solarpositionalgorithm.h
21902192
renderer/utility/spectrumclamp.h
21912193
renderer/utility/stochasticcast.h
21922194
renderer/utility/testutils.cpp

0 commit comments

Comments
 (0)