<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>Procedural interior generation for artificial intelligence training and computer graphics</article-title>
      </title-group>
      <contrib-group>
        <aff id="aff0">
          <label>0</label>
          <institution>E. D. Feklisov</institution>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Keldysh Institute of Applied Mathematics</institution>
        </aff>
        <aff id="aff2">
          <label>2</label>
          <institution>Moscow State University</institution>
          ,
          <addr-line>Moscow</addr-line>
          ,
          <country country="RU">Russia</country>
        </aff>
        <aff id="aff3">
          <label>3</label>
          <institution>Related work</institution>
          ,
          <addr-line>plan generation</addr-line>
        </aff>
      </contrib-group>
      <abstract>
        <p>Since the creation of computers, there has been a lingering problem of data storing and creation for various tasks. In terms of computer graphics and video games, there has been a constant need in assets. Although nowadays the issue of space is not one of the developers' prime concerns, the need in being able to automate asset creation is still relevant. The graphical fidelity, that the modern audiences and applications demand requires a lot of work on the artists' and designers' front, which costs a lot. The automatic generation of 3D scenes is of critical importance in the tasks of Artificial Intelligent (AI) robotics training, where the amount of generated data during training cannot even be viewed by a single person due to the large amount of data needed for machine learning algorithms. A completely separate, but nevertheless necessary task for an integrated solution, is furniture generation and placement, material and lighting randomisation. In this paper we propose interior generator for computer graphics and robotics learning applications. The suggested framework is able to generate and render interiors with furniture at photo-realistic quality. We combined the existing algorithms for generating plans and arranging interiors and then finally add material and lighting randomization. Our solution contains semantic database of 3D models and materials, which allows generator to get realistic scenes with randomization and per-pixel mask for training detection and segmentation algorithms.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <p>Since the creation of computers, there has been a
lingering problem of data storing and creation for various
tasks. In terms of computer graphics and video games,
there has been a constant need in assets. Although
nowadays the issue of space is not one of the developers'
prime concerns, the need in being able to automate asset
creation is still relevant. The graphical fidelity, that the
modern audiences and applications demand requires a lot
of work on the artists' and designers' front, which costs a
lot. The automatic generation of 3D scenes is of critical
importance in the tasks of Artificial Intelligent (AI)
robotics training, where the amount of generated data
during training cannot even be viewed by a single person
due to the large amount of data needed for machine
learning algorithms. A completely separate, but
nevertheless necessary task for an integrated solution, is
furniture generation and placement, material and lighting
randomisation.</p>
      <p>A number of industries use virtual reproductions of
indoor scenes: interior design, architecture, gaming and
virtual reality are a few. A computer model that
understood the structure of such scenes well enough to
generate new ones could support such industries by
enabling fully or semi-automatic population of indoor
environments.</p>
      <p>Since development of neural networks algorithms,
there is a big problem with creating training data sets.
Computer vision and robotics researchers have begun
turning to virtual environments to train data-hungry
models for scene understanding and autonomous
navigation. So indoor scene synthesis could also be used
to automatically synthesize large-scale virtual training
data for various vision and robotics tasks.</p>
      <p>Interior layout generation can be divided into three
main subtasks: plan, layout generation and 3D content
generation. By "plan" we are going to implicate a general
representation of a storey, that describes the types of
rooms, their dimensions and possible neighboring
chambers that is stored in a separate datafile. The
"Layout" is the final blueprint showing all rooms being
accurately placed and connected.</p>
      <p>
        Plan generation can be done either by the means of
machine learning [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ], or by creating a general list of room
placement that will be used to randomly assemble the
result [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ]. Depending on the type of layout constructor
the rules can be either strict or be more of a loose
guideline.
      </p>
      <p>Layout assembly is the most complicated task of the
three. The idea is to take a predetermined area (except for
some cases) and separate it into subareas based on the
previously generated plan. There has been developed a
lot of different ways to solve this problem over the years,
some of which are listed below.</p>
      <sec id="sec-1-1">
        <title>Tiling</title>
        <p>
          "Tiling" approach works similar to a toy constructors.
It represents abstracts the whole area with small
equalsized chunks [
          <xref ref-type="bibr" rid="ref3">3</xref>
          ]. These pieces are usually placed in a
grid and the process of layout generation comes down to
placing the tiles in an appropriate manner. The blocks do
not contain any information about rooms and are merely
used for determining the overall shape.
        </p>
        <p>
          Most grid based modern computer games [
          <xref ref-type="bibr" rid="ref4 ref5">4, 5</xref>
          ]
nowadays use tiles for constructing environments to
provide immense replay-ability and moderate challenge
to the players. The method is also popular among
independent developers since it allows to easily create
level geometry and graphics on a tight budget. The
advantage of tiling approach is simplicity and
universality: tile primitives can be used in other methods
for basic building blocks. The drawbacks are clearly
visible structure of resulting model and difficulties with
smaller then tile size objects.
        </p>
        <p>
          Dense packing
"Dense packing" method makes of use of rooms with
predetermined shapes and sizes and attempts to place
them within a confined space with preset dimensions in
an optimal manner [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ]. It is based on a class of
optimization problems with the same name. Rooms can
be represented with tiles for ease of modeling. The
advantage of ths method is that it based on a well-known
mathematical problem and a lot of different solution have
been developed for it. It also useful when particular size
of rooms is required. The main disadvantage is that
algorithm may require to regenerate room if placing them
in the area is impossible and thus final solution may take
a lot of time not even taking into account optimization
problem complexity.
        </p>
        <p>
          Growth
"Growth" algorithm is done in three phases [
          <xref ref-type="bibr" rid="ref7">7</xref>
          ]. In
preparation the area is divided into small sections like
tiles, each given an initial numeric value. Then the
"seeds" of each section/room are subsequently planted in
positions with highest values, each changing the numbers
on the grid based on probabilities of other room types
being adjacent. The rooms are later iteratively grown
around their origin in a rectangular manner. All unused
space is latter consumed by existing chambers. An
advantage is straightforward implementation and
possibility to work with non-rectangular shapes of target
space. The main disadvantage of the algorithm is the
inability to control the size of the rooms.
        </p>
        <p>
          Inside-out
"Inside-out" approach (known as "growth" in some
sources) is based on placing rooms in an optimal manner,
succeeded with creating the outer wall of the house based
on resulting shape [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ]. The act placing rooms can be
implemented in different ways. For example, the
algorithm can choose the first primary chamber and place
other rooms around it. This algorithms does not restrict
the resulting area size and shape and adjacent rooms can
be calculated and placed more accurately. However,
chambers can be placed in an unoptimized manner
resulting in visible gaps and the outer shape can turn out
to be unrealistic.
        </p>
      </sec>
      <sec id="sec-1-2">
        <title>Treemap</title>
        <p>
          Other set of methods is performed by representing the
floor plan as a graph and then recursively dividing the
rectangle area into subsections until all rooms are placed
[
          <xref ref-type="bibr" rid="ref9">9</xref>
          ]. One of the implementations requires building a
treemap (hence the name) of the graph from a rectangle
area. This approach works reliably on office building.
Disadvantage of algorithms is that it can generate rooms
with weird proportions, which however can be rectified
by using a squarified treemap.
        </p>
      </sec>
      <sec id="sec-1-3">
        <title>Machine learning approaches</title>
        <p>
          "Machine learning" way is centered around building a
Generative Adversarial Network (GAN) that generates
floor based on a set of predefined layouts [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ]. It consists
of two networks: one generates layouts based on random
noise, while the other compares the result to existing
layout to determine whether it is appropriate. The most
significant advantage of machine learning approach is
that it unlike other methods takes social aspects into
account by default. The disadvantage of such approach is
that training data-sets are required which is fundamental
problem.
        </p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>3. Related work (furniture placement)</title>
      <p>
        Early works in this field uses simple statistical
relationships between objects [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ]. The next step was a
data-driven scene synthesis: learning priors over object
occurrence and arrangement from examples. The first
such method learned separate priors for occurrence and
arrangement [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ] but is limited to small scale scenes due
to the limited availability of training data and the learning
methods available at the time. Various related methods
have been proposed, modeling object occurrence directed
graphical models combined with Gaussian mixture
arrangement patterns [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ], and activity-based object
relation graphs [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ].
      </p>
      <p>
        With the availability of large dataset of indoor virtual
scenes such as SUNCG [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ], new data-driven methods
have been proposed. [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] uses a directed graphical model
for object selection but relies on heuristics for object
layout. [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] uses a probabilistic grammar to model
scenes, but also requires data about human activity in
scenes (not readily available in all datasets) as well as
manual annotation of important object groups.
      </p>
      <p>
        The most relevant papers at the moment use deep
convolutional networks to learn priors over which objects
should be in a scene and how they should be arranged
[
        <xref ref-type="bibr" rid="ref17">17</xref>
        ] uses deep CNN that operate on top-down image
representations of scene and synthesises scenes by
sequential placing objects. [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ] this paper utilise the same
idea but reduces amount of inference steps.
      </p>
      <p>Training synthetic data from virtual indoor scenes
quickly becoming an essential source of learning data for
computer vision and robotics systems. Several recent
works have shown that indoor scene understanding
models can be improved by training on large amounts of
synthetically-generated images from virtual indoor
scenes. At the intersection of vision and robotics,
researchers working on visual navigation often rely on
virtual indoor environments. Our model can complement
these simulators by automatically generating new
environments in which to train such intelligent visual
reasoning agents.</p>
      <p>
        Recently there was published a novel dataset for
training and bench-marking semantic SLAM methods
[
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] based on SUNCG dataset rendered with ambient
occlusion and photon mapping. Authors of [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ] mainly
focus on sampling trajectories that simulate motions of a
simple home robot.
      </p>
    </sec>
    <sec id="sec-3">
      <title>4. Suggested approach</title>
      <p>The main difference of our work is that our system
works not only with separate rooms, but is also capable
of creating the layout of buildings itself and then fill
rooms with necessary filling, which can be useful both in
the field of architecture and in generating a large amount
of synthetic data for training. It also supports different
lighting and material models, which makes the result
photo-realistic.</p>
      <sec id="sec-3-1">
        <title>Floor (plan) generation</title>
        <p>
          The first route we have taken was a mix of "dense
packing" [
          <xref ref-type="bibr" rid="ref6">6</xref>
          ] and "inside-out" [
          <xref ref-type="bibr" rid="ref8">8</xref>
          ] methods. A floor plan
was generated based on input rules and room sizes in
JSON format, then approximate dimensions for the first
floor were calculated. Based on them the packing
algorithm tried to fill the area with rooms, ending by
drawing the outer wall around the layout and proceeding
to the next floor. Instead of tiles it used a rectangle room
of arbitrary size as a primitive.
        </p>
        <p>1) Plan generation algorithm</p>
        <p>This solution is based on some real-world knowledge
and can be further developed to be more realistic. All the
random distributions, used throughout the algorithm,
have been assembled into a database manually.
1. The algorithm start with random number of floors
and rooms of different types.
2. It checks whether there are enough rooms of each
required type (for example bathrooms). Otherwise it
goes to step 1.
3. Rooms are randomly distributed across floors,
assigning specific dimensions to them. It also
ensures that each floor has at least one bathroom. In
addition, it adds a ladder in each floor, except for the
last one.
4. The algorithm goes to step 3.</p>
        <p>o If some floors are empty
o If the floor above is larger than the floor below
o If some floors do not contain rooms except for
bathrooms.
5. If the generation takes too long it goes back to step 1.
6. It goes through room floor-by-floor and randomly
links them together.</p>
        <p>An example of the resulting file:
"floor 1": {
"bathroom 1": {
"X": 8,
"Y": 6
},
"link 1": "bedroom-living room",
"living room 1": {
"X": 92,
"Y": 61
}
2) Layout assembly algorithm</p>
        <p>The implementation is based upon Blender and uses
its API to generate final 3D layout and uses simple
autogenerated shapes to approximate objects.
1. The algorithm goes through the plan we generated
previously floor by floor.
2. It searches for linked rooms and assembles them into
clusters. Each cluster gets its overall space calculated
and the chambers then placed based on a simplified
dense-packing algorithm.
3. Clusters, single rooms and a ladder are then packed
within floor space similarly to step 2.
4. The outer wall is drawn around the structure,
generated above.
5. The algorithm moves to the next floor. This time, the
floor space is reduced by the space of the ladder
from the previous floor and a hole is placed above it.</p>
        <p>Thus, our implementation has further advantages:
First it gain highly variable and realistic results, but it is
more flexible than the Machine Learning approaches
since it does not require gathering real data to get realistic
layouts. Next, we can generate multi-store building with
connecting ladders and finally, we support for
nonrectangle room and floor shapes. However, our
implementation has several restrictions:
1. Adding new rules (feeding as input) for plan
generation can be rather challenging due to them
being coupled together
2. The walls colliding with each other resulted in a
visual glitch, that was hard to deal with.
3. In comparison to tile based methods our algorithm
has difficulties with adding detailed geometry details
to architectural elements: while tile based methods
efficiently uses baked/precomputed geometry for
windows, doors and e.t.c, our approach requires such
geometry to be generated in the fly automatically for
target layouts which is not trivial task generally
speaking.</p>
      </sec>
      <sec id="sec-3-2">
        <title>Furniture layout</title>
        <p>For the first approximation of the creation of a virtual
interior scene, a rather simple algorithm was selected for
the layout of office furniture in the room.</p>
        <p>1) Rotation layout algorithm. The idea is simple:
traverse the edges of the office’s perimeter. If the edge is
shorter than the width of a desk, ignore it - a constraint
relaxed in some of our other algorithms. If it is
sufficiently long to place a desk, start from one end of the
edge and lay down as many desks as possible along that
edge. This algorithm is run three times with the only
difference being the order in which the edges are
traversed:</p>
        <p>1.1) Clockwise: start from the edge left of the main
door and run clockwise along the perimeter.</p>
        <p>1.2) Counterclockwise: start from the edge right of
the main door and run counter-clockwise along the
perimeter.</p>
        <p>1.3) Sort by length: sort the edges by length and
process them from longest to shortest.</p>
        <p>2) Left-right layout algorithm</p>
        <p>The left right layout algorithm is very similar to the
rotation algorithm. However, there are two key
differences. First, it traverses all the sufficiently long
edges to the left of the door edge first and then the edges
to the right of the door; left and right are determined by
taking a line perpendicular to the door edge, running
through its center. Second, when laying down desks, it
always works from the bottom up so that the resulting
layout tends to be more symmetrical and closer to how
our architects tend to lay out desks.</p>
        <p>The left right layout algorithm is run twice. The first
time we enforce that desks must be completely touching
the wall and cannot hang off a short wall such as a
mullion. That is, we ignore all walls that are less than
desk width long (as described above). However, many
offices have indentations, columns, and other edge
conditions resulting in walls less than desk width length.
Consequently, we run the algorithm again but this time
we attempt to lay down desks on all edges, irrespective of
their length, and we allow a desk to overhang an edge.
After all the algorithms have been run, the code
determines the highest capacity found.</p>
        <p>3) Brute force layout algorithm</p>
        <p>The brute force layout algorithm is roughly two
orders of magnitude more computationally expensive and
so is only run when the above perimeter-based algorithms
do not sufficiently fill the space.</p>
        <p>This algorithm assumes that for each edge, desks are
either placed in a line facing the wall (FW) or they exist
as a set of back-to-back bank of desks extending into the
space.</p>
        <p>The question is which edges should be set as
back-toback? As there are no obvious heuristics, we take a brute
force approach, trying all possible combinations with
one, two, or three edges designated as back-to-back and
the remaining edges wall-facing. The examples of our
algorithm can be found at fig. 1.
We also try a variant where, for each edge that is
longer than desk width, we consider three options: no
desks, face wall, and back to back. The “no desks” option
can be useful to allow a bank of desks on other walls to
grow.</p>
        <p>Unfortunately, having three options per wall leads to
a combinatorial explosion in which the number of
combinations to try grows very quickly with the number
of walls. Thus, we only use this option if the number of
walls longer than desk width is 4 or less because 34=81,
which is manageable, and 35=243 which is too many for
current computational resources.</p>
      </sec>
      <sec id="sec-3-3">
        <title>Materials, lighting and rendering</title>
        <p>
          This was actually one of the most time consuming
problems we have to solve. The serious difficulties are
concentrated around the fact that modern rendering
systems use exclusively their own lighting and material
models which is inconsistent with others. The realistic
looking computer graphics content is created for the
target rendering system and cannot be used directly in
others. So, there is no such thing as open data bases of
realistic 3d models due to importing/exporting 3D
content from one rendering system to another is not
trivial task. Taking in to account the fact of required
randomization we had to build our own content creation
pipeline to adopt existing 3D models. For this purpose,
we used GPU accelerated open source Hydra Renderer
[
          <xref ref-type="bibr" rid="ref20">20</xref>
          ]. We chose this solution because it is one of the few
open rendering systems that has a full-fledged industrial
level pipeline for creating content (with material
conversion scripts from other popular rendering systems:
VRay, Mental, Corona), while the rendering engine itself
has high performance and works completely on GPU as
well in Windows and Linux which is essential for
training data sets generation due to large amount of
required images and available Linux servers with GPUs.
        </p>
        <p>For the purpose of material and lighting
randomization we have adjusted the work of the artist for
randomized content creation via custom 3ds max plugins
that help artist to setup randomized materials and assign
them to object parts (fig. 2). The artist determines the
logic of randomization by
setting special material parameters (fig. 2) which will
later be exported to SQL-based database. This allows us
to limit randomization and make it realistic in
average. For example, “Target” parameter (fig. 3, down
and left) acquiring some definite value allows to use this
material only on a specific part of a certain class of
models. We didn’t choose any modern AI based or
automatic methods for 3D content generator purpose
because our main requirement is high degree of control
over the generated result and this is a problem for neural
network based methods. Finally, we have created export
tool that automatically adds all created 3d Models in our
SQL-based database and then created 3D model
randomizer based on this database (see fig. 4).</p>
        <p>Fig. 2. Our randomization material plugin GUI and check for artist in 3ds max. This is essential for randomized results to
be realistic in the target application due to artist could check whether customized distribution works in expected way or
not</p>
      </sec>
      <sec id="sec-3-4">
        <title>Generating datasets</title>
        <p>We used python scripts to run a specific generation
scenario on the Linux server with 8 K100 GPUs. In fact,
this process was not automatic because CV engineers ask
very different scenarios for their experiments each time.
Scripts run different parts of our generator (floor plan,
furniture layout or picking 3D models from database) and
connect everything together via files. Our solution is able
to generate approximately 10 images per hour on a single
GPU and thus ~2 days is usually needed to generate full
training dataset.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>Conclusion and future work</title>
      <p>In this paper we have presented procedural house
interior generator that is able to produce interior images
with high quality and speed. The example of generated
interiors can be found at fig.5-7. However, we were not
able to build complete industrial-level solution. Our
system is highly fragmented connecting everything
together with scripts and files, and the biggest problem is
that these scripts actually have to be changed (sometimes
mostly created from scratch) for each dataset generation
scenario due to CV engineer’s requests are very different
in practice. Despite the fact that we can generate full
dataset in 2 days, it takes us about 2 weeks to create new
scripting scenario and debug it with the full pipeline. So
we believe that using real-time rendering engines for
training AI in practice is almost useless for today: the
bottleneck is always in human-beings. Nevertheless,
going all the way towards realistic 3D generator and
rendering for AI training we would like to share our
experience and state a set of problems which are, in
general, not solved for today since this area of research is
quite new and thus during our work we got more
questions than answers.</p>
      <p>Fig. 5. Example of render (top left), generated layout (top right), objects masks (bottom left) and object masks from in layout view
(bottom right)</p>
      <sec id="sec-4-1">
        <title>Tightly integrated framework</title>
        <p>In our case at least 3 different people participate in
dataset generation process, they are: (1) artist, who
should create and check input 3D content, (2) a scripting
person who creates scenarios for generator and (3) CV
engineer who control the result. These people need very
different skills/knowledge and we don’t think that the
number of participants can be reduced. However, their
work could be organized better by putting them into a
unit ecosystem with interface convenient for each
participant. Our 3ds max plugins is the first step towards
this direction, but in general this is an open problem even
for a restricted area of AI training.</p>
        <p>We used python scripts to run a specific generation
scenario on the Linux server with 8 K100 GPUs. In fact,
this process was not automatic because CV engineers ask
very different scenarios for their experiments each time.
Scripts run different parts of our generator (floor plan,
furniture layout or picking 3D models from database) and
connect everything together via files. Our solution is able
to generate approximately 10 images per hour on a single
GPU and thus ~2 days is usually needed to generate full
training dataset.</p>
      </sec>
      <sec id="sec-4-2">
        <title>Unoptimized data path, memory and disk bottleneck</title>
        <p>
          In our case different algorithms (for example floor
plan generation and further 3D model construction, or
renderer output and further Natron post process) is
communicated via files. Linux cache and fast SSD on
server amortize this problem, but only a little. According
to our estimates any object like mesh or image is copied
from 4 to 6 times on average due to loading, storing in
memory, putting to GPU or saving back to disk in
different formats. This format conversion madness makes
useless any attempts to speed up rendering in practice.
However, we were able to optimize this process for some
cases when we have formed scene library and put it to
GPU once (i. e. we don’t load new 3D models or images
to GPU for several subsequent frames). This gives
essential benefit even for our prototype with off-line
rendering, but it is of critical importance for systems
that’s is going to use real-time rendering. We believe that
generation scenario should take care of that problem in
combination with some caching system and feeding the
generated images directly to the neural network on the
same GPU without storing it to disk (except small part of
them for debug cases). We also suppose that modern
denoising algorithms [
          <xref ref-type="bibr" rid="ref21">21</xref>
          ] could significantly accelerate
generation process.
        </p>
      </sec>
      <sec id="sec-4-3">
        <title>Absence of rendering standards and open 3D content</title>
        <p>
          Available base of 3D models (like well-known
ShapeNet) is not ready even for rendering: their quality is
low and segmentation of parts by materials is rough. In
the case of randomizing materials, we need to manually
process them anyway and assign relation to our data base.
Recent story with SUNCG [
          <xref ref-type="bibr" rid="ref19">19</xref>
          ] (which is far from
photorealistic quality anyway) confirms the need of the
open content libraries.
        </p>
      </sec>
      <sec id="sec-4-4">
        <title>Procedural approaches</title>
        <p>
          Unfortunately, in this work we did not manage to use
procedural approaches [
          <xref ref-type="bibr" rid="ref22">22</xref>
          ] for textures, which could
additionally increase the variability of the generated
content.
        </p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <surname>Merrell</surname>
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schkufza</surname>
            <given-names>E.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Koltun</surname>
            <given-names>V</given-names>
          </string-name>
          .
          <article-title>Computergenerated residential building layouts //ACM SIGGRAPH Asia 2010 papers</article-title>
          . -
          <source>2010</source>
          . -
          <fpage>С</fpage>
          .
          <fpage>1</fpage>
          -
          <lpage>12</lpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <surname>Bengtsson</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Melin</surname>
            <given-names>J</given-names>
          </string-name>
          .
          <article-title>Constrained procedural floor plan generation for game environments</article-title>
          .
          <article-title>- 2016.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Cerny Green</surname>
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Khalifa</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Alsoughayer</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Surana</surname>
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Liapis</surname>
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Togelius</surname>
            <given-names>J</given-names>
          </string-name>
          .
          <article-title>Two-step Constructive Approaches for Dungeon Generation</article-title>
          .
          <article-title>- 2019.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Firaxis</given-names>
            <surname>Games Sid Meier's Civilization</surname>
          </string-name>
          <string-name>
            <surname>VI</surname>
          </string-name>
          .
          <article-title>- 2016.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>Triumph</given-names>
            <surname>Studios Age of Wonders III</surname>
          </string-name>
          .
          <article-title>- 2014.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <surname>Koenig</surname>
            <given-names>R.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Knecht</surname>
            <given-names>K.</given-names>
          </string-name>
          <article-title>Comparing two evolutionary algorithm based methods for layout generation: Dense packing versus subdivision</article-title>
          .
          <article-title>- 2014.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>Zifeng</given-names>
            <surname>Guo</surname>
          </string-name>
          ,
          <article-title>Biao Li Evolutionary approach for spatial architecture layout design enhanced by an agent-based topology finding system</article-title>
          .
          <article-title>- 2017.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <surname>Martin</surname>
            <given-names>J. Procedural</given-names>
          </string-name>
          <string-name>
            <surname>House</surname>
          </string-name>
          <article-title>Generation: A method for dynamically generating floor plans</article-title>
          .
          <article-title>- 2016.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <surname>Fernando</surname>
            <given-names>M. Automatic</given-names>
          </string-name>
          <article-title>Real-Time Generation of Floor Plans Based on Squarified Treemaps Algorithm</article-title>
          .
          <article-title>- 2010.</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>L.-F.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>S.-K.</given-names>
            <surname>Yeung</surname>
          </string-name>
          ,
          <string-name>
            <surname>C.-K. Tang</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          <string-name>
            <surname>Terzopoulos</surname>
            ,
            <given-names>T. F.</given-names>
          </string-name>
          <string-name>
            <surname>Chan</surname>
            , and
            <given-names>S. J.</given-names>
          </string-name>
          <string-name>
            <surname>Osher</surname>
          </string-name>
          . Make It Home:
          <article-title>Automatic Optimization of Furniture Arrangement</article-title>
          .
          <source>In SIGGRAPH</source>
          <year>2011</year>
          ,
          <year>2011</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <surname>Matthew</surname>
            <given-names>Fisher</given-names>
          </string-name>
          , Daniel Ritchie, Manolis Savva, Thomas Funkhouser, and
          <string-name>
            <given-names>Pat</given-names>
            <surname>Hanrahan</surname>
          </string-name>
          .
          <year>2012</year>
          .
          <article-title>Example-based Synthesis of 3D Object Arrangements</article-title>
          .
          <source>In SIGGRAPH Asia</source>
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>Paul</given-names>
            <surname>Henderson</surname>
          </string-name>
          and
          <string-name>
            <given-names>Vittorio</given-names>
            <surname>Ferrari</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>A Generative Model of 3D Object Layouts in Apartments</article-title>
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <surname>Qiang</surname>
            <given-names>Fu</given-names>
          </string-name>
          , Xiaowu Chen, Xiaotian Wang, Sijia Wen,
          <string-name>
            <surname>Bin Zhou</surname>
            , and
            <given-names>Hongbo</given-names>
          </string-name>
          <string-name>
            <surname>Fu</surname>
          </string-name>
          .
          <year>2017</year>
          .
          <article-title>Adaptive Synthesis of Indoor Scenes via Activity-associated Object Relation Graphs</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <given-names>S.</given-names>
            <surname>Song</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Yu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Zeng</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A. X.</given-names>
            <surname>Chang</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Savva</surname>
          </string-name>
          , and
          <string-name>
            <given-names>T.</given-names>
            <surname>Funkhouser</surname>
          </string-name>
          .
          <article-title>Semantic Scene Completion from a Single D. Image</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>V. F.</given-names>
            <surname>Paul Henderson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>Kartic</given-names>
            <surname>Subr</surname>
          </string-name>
          .
          <article-title>Automatic Generation of Constrained Furniture Layouts</article-title>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <surname>Qi</surname>
          </string-name>
          , Siyuan and Zhu, Yixin and Huang, Siyuan and Jiang, Chenfanfu and Zhu, Song-Chun.
          <source>Humancentric Indoor Scene Synthesis Using Stochastic Grammar</source>
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          [17]
          <string-name>
            <surname>Kai</surname>
            <given-names>Wang</given-names>
          </string-name>
          , Manolis Savva,
          <string-name>
            <surname>Angel</surname>
            <given-names>X.</given-names>
          </string-name>
          <string-name>
            <surname>Chang</surname>
          </string-name>
          , and Daniel [Разрыв обтекания текста]Ritchie.
          <article-title>Deep Convolutional Priors for Indoor Scene Synthesis</article-title>
          .
          <source>In SIGGRAPH 2018</source>
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          [18]
          <string-name>
            <given-names>Daniel</given-names>
            <surname>Ritchie</surname>
          </string-name>
          ,
          <source>Kai Wang and Yu-an Lin. Fast and Flexible Indoor Scene Synthesis via Deep Convolutional Generative Models.</source>
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          [19]
          <string-name>
            <surname>Pavel</surname>
            <given-names>Kirsanov</given-names>
          </string-name>
          , Airat Gaskarov, Filipp Konokhov, Konstantin Sofiiuk, Anna Vorontsova, Igor Slinko, Dmitry Zhukov, Sergey Bykov, Olga Barinova, Anton Konushin. DISCOMAN:
          <article-title>Dataset of Indoor SCenes for Odometry, Mapping And Navigation</article-title>
          . arXiv:
          <year>1909</year>
          .12146.
          <year>September 2019</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          [20]
          <string-name>
            <surname>Frolov</surname>
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sanzharov</surname>
            <given-names>V.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Galaktionov</surname>
            <given-names>V</given-names>
          </string-name>
          .
          <article-title>Open Source rendering system Hydra Renderer</article-title>
          . https://github.com/Ray-Tracing-Systems/HydraAPI
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          [21]
          <string-name>
            <given-names>S.V.</given-names>
            <surname>Ershov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.D.</given-names>
            <surname>Zhdanov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.G.</given-names>
            <surname>Voloboy</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.A.</given-names>
            <surname>Galaktionov</surname>
          </string-name>
          .
          <article-title>Two denoising algorithms for bidirectional Monte Carlo ray tracing // Mathematica Montisnigri</article-title>
          , Vol. XLIII,
          <year>2018</year>
          , p.
          <fpage>78</fpage>
          -
          <lpage>100</lpage>
          . https://lppm3.ru/files/journal/XLIII/MathMontXLIIIErshov.pdf
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          [22]
          <string-name>
            <given-names>V.V.</given-names>
            <surname>Sanzharov</surname>
          </string-name>
          ,
          <string-name>
            <given-names>V.F.</given-names>
            <surname>Frolov</surname>
          </string-name>
          . Level of Detail for Precomputed Procedural Textures // Programming and Computer Software,
          <year>2019</year>
          , V.
          <volume>45</volume>
          , Issue 4, pp.
          <fpage>187</fpage>
          -
          <lpage>195</lpage>
          DOI:10.1134/S0361768819040078 About the Authors Egor Feklisov, student at Moscow State University,
          <source>faculty of Compute Mathematics and Cybernetics</source>
          , Computer Graphics and Multimedia lab. E-mail: egor.feklisov@gmail.com. Mihail Zingerenko, student at Moscow State University,
          <source>faculty of Compute Mathematics and Cybernetics</source>
          , Computer Graphics and Multimedia lab. E-mail: liamhizer@gmail.com. Vladimir Frolov,
          <source>Ph. D researcher at Keldysh Institute of Applies Mathematics</source>
          and Moscow State University.
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>