Anthroposcaper — User Guide

Parametric creation of 3D models of urban and architectural environments.

Anthroposcaper is a web application for the parametric creation of 3D models of urban and architectural environments: roads, sidewalks, curbs, fences, and terrain. You draw an ordinary 2D plan (or import a DXF) and mark faces and lines with tags such as road, grass, fence. Tags expand into classes — named sets of properties (materials, textures, heights, slopes) that you define yourself. Complex geometry — curbs, fences, railings — you import as ready-made 3D models (GLB) with materials and textures and set them up as templates, and the system automatically lays them out along the appropriate edges. The result is a finished 3D scene with materials, textures, and junction geometry.

1. Introduction

What it is

The topology (where the faces are, where the edges are, where the corners are) is derived from the drawing automatically, while the rules for turning 2D into 3D are defined declaratively — through tags and attributes, not nodes or code. Adjust a single tag or a single template, and everything that uses it is recomputed.

Anthroposcaper wins on scale and repetition — when you need to place miles of similar elements along the streets of a district. Typical users are architectural visualization artists (environments for rendering), architects and urban planners (conceptual district plans), landscape designers (paths, lawns, fences, and curbs as reusable templates), and gamedev (levels and environments).

General workflow

Drawing (nominally 2D)  →  Topology (DCEL)  →  Tags/attributes/templates  →  3D model
  1. Draw or import (DXF) a plan.
  2. Faces and edges are built automatically from the intersections of lines (topology).
  3. Assign tags and attributes with rules to faces, edges, and objects.
  4. Prepare templates for complex geometry (curb, fence) by importing 3D models (GLB).
  5. Click Build 3D — the system assembles the 3D scene.

2. Getting Started

Interface

The app runs in your browser (no installation). The main areas are:

  • Viewport in the center — a single 3D view with a free camera.
  • Left panel — project tree, layers, coordinate systems, and the DCEL panel.
  • Right panel — properties of the current selection, plus the "Attributes" / "Layer Attributes" panels.
  • Tool toolbar and status bar.
  • Bottom panel — display checkboxes (axes, DCEL, 3D) and the Build 3D button.

Viewport and Camera

The camera is orbital — it rotates around a target point. Mouse controls:

Mouse action Result
Right button + drag Rotate (orbit around the target point)
Middle button (wheel) + drag Pan — shift the scene in the screen plane
Scroll wheel Zoom in / out

Standard views and projections (keyboard shortcuts; views are oriented to the active coordinate system):

Key Action
T Top view
F Front view
L Left view
P Perspective projection
O Orthographic projection
C Move the camera center to the cursor position
Z Fit the whole scene or the selection to the screen (Zoom to Fit)

Projects and Storage

  • Projects are stored in the browser (IndexedDB) and/or exported to a file (.asprj).
  • Operations: new, open, save, save as, close.
  • A project is self-contained: the drawing, imported textures, meshes, materials, and class sets are all kept in a single file.
  • An asterisk in the title bar indicates unsaved changes.

Your data stays with you. The app runs entirely in the browser: projects, imported files, and build results are never sent anywhere. We do not receive or store your working data on any server — everything lives locally on your device (in the browser's storage and in the files you export yourself).

⚠ Back up to disk. Browser storage (IndexedDB) isn't permanent: it's easy to lose — when you clear site data, in incognito mode (wiped after the window closes), when you switch to another browser or device, or when you reinstall the browser. Regularly export important projects to an .asprj file (Save As / export to disk) — that's the only truly reliable backup.

3. The Drawing

The drawing is three-dimensional: every point has X, Y, and Z (height) coordinates, and objects can be built in any plane. That said, faces (closed regions) are determined from line intersections in top view — topology is computed on the projection onto the horizontal plane, with the Z height carried into it from the objects themselves. Curves are broken down into segments — after all, the end goal is a 3D model.

Primitives

Type Description
Point A point in space.
Polyline A polyline (a sequence of vertices); can be closed.
Circle A circle — center, radius, segment count, plane normal, rotation angle.
Arc An arc — center, radius, start and end angle, segment count, plane normal.
Image A reference image — a rectangle with a picture, positioned and scaled in space.
MeshInstance Placement of an imported 3D mesh (a reference to a template in the tree + a transform).

Segment count on curves is a user setting for the precision of the final mesh. In the viewport you see exactly the approximation that will end up in the 3D model. In the "segments" field you can enter either a number (N segments) or the length of a single segment in meters — for example 3m: the segment count is then computed automatically from the curve's length (the longer the arc or circle, the more segments for the same specified length).

Plane orientation. Circle, Arc, and Image each store their own plane normal. This lets you draw them in any tilted plane. New objects immediately land in the plane of the active coordinate system.

Drawing tools

Tools are selected on the toolbar. Some have keyboard shortcuts (see the reference).

Tool What it does
Point Add a single point.
Polyline A polyline (multiple segments; Enter finishes it).
Rect A rectangle (by 2 corners, or by a base line plus a third point).
Circle A circle (center → point on the circle).
Arc An arc of a circle.
Image Insert a raster reference image with positioning.
PlaceMesh Place a 3D mesh template in the drawing.
CS Create a coordinate system (see §5).

Editing tools

Selection comes in three modes — whole objects, individual points, individual segments; plus topology face selection. Switch between them with ` / 1 / 2 / 4.

Tool Key What it does
Select ` Select whole objects (click or box; Ctrl+click — multi-select).
PointSelect 1 Select individual vertices/points.
SegmentSelect 2 Select individual segments.
FaceSelect (DCEL) 4 Select topology faces (to assign attributes to faces).
Move W Move the selection.
Rotate E Rotate the selection.
Scale R Scale the selection.
Trim Trim segments back to intersections.
Extend Extend edges to the nearest intersection.
Refine Insert a vertex on a segment.
Break Break a polyline into separate parts.
Merge Merge adjacent objects (polylines, arcs) into one.
Fillet Round a corner with an arc (radius set by the r parameter).
Chamfer Cut a corner with a straight line (leg set by the d parameter).
Offset A parallel copy at a given distance.
Mirror Mirror across an axis.
ArrayRect A rectangular array of copies.
ArrayPolar A radial (circular) array of copies.
Explode Break a compound object into parts.
Q Q Return to the last selection tool.

Clipboard: Ctrl+C copy, Ctrl+X cut, Ctrl+Shift+C copy with a base point (set it with a click), Ctrl+V paste (the ghost geometry follows the cursor).

It's not just the primitives themselves that get copied, but also their layers, colors, and parametric attributes (tags and values, including those on individual vertices and segments). On paste, layers are carried over by name: if the target drawing already has a layer with the same name, objects land on it; otherwise the layer is created.

The clipboard is shared across the whole application and persists when you open or create another project. So you can paste not only into another drawing of the same project, but also into another file: copy in one project, open/create another — and paste.

4. Precise Construction

Two mechanisms provide construction precision: object snaps (attach the cursor to geometry) and coordinate input (exact numbers from the keyboard).

Object Snaps

Snaps make the cursor "stick" to characteristic points of the geometry. Toggle them on and off with the S key; configure individual modes with Shift+S.

Snap What it gives you
Endpoint Endpoints of segments and arcs.
Midpoint Midpoint of a segment or arc.
Center Center of a circle or arc.
Node A point object (Point).
Intersection Intersection of segments or tracking lines.
Nearest The nearest point on a segment.
Extension A ray extending an acquired segment past its endpoint.
Normal Perpendicular (projection of a point onto a segment).
Parallel A ray parallel to an acquired segment.
Bisector The bisector of the angle between adjacent segments.
Tangent Tangent to a circle or arc.
Ortho Horizontal/vertical tracking lines from acquired points.

Snap Tracking

This feature remembers the points you have snapped to and builds invisible tracking rays from them. Hover the cursor over a snapped point and hold it there briefly (a short hover) — the point is "acquired." Once acquired, rays extend from it (extension, normal, bisector, ortho), and the cursor can snap to their intersections with rays from other acquired points. This lets you build "at the intersection of extensions" without any helper geometry.

Coordinate Input (Constraints)

While constructing, a floating panel appears next to the cursor with fields for exact values — these override the cursor position. To set a value, move to the field you want with the Tab key (Shift+Tab to go back) and type a number. You don't type the field labels themselves (x, len, ang…) — they are just captions. Which fields are shown is configured with Shift+C. Values are interpreted in the local coordinates of the active coordinate system.

Field Meaning Requires a reference point
x / y / z Absolute coordinate along the corresponding axis. no
len Distance from the reference point to the current one. yes
dx / dy / dz Offset from the reference point along an axis. yes
ang Angle (in degrees) from the reference direction. yes

Display vs Lock. An unlocked field (Display) simply shows the current value and updates as you move the mouse. A locked field fixes its value (the background is highlighted), and the cursor snaps to points that satisfy the constraint. If you lock conflicting constraints, a CONFLICT message appears; unlock one of the fields.

How to lock and unlock. First select the field you want with Tab / Shift+Tab. Then type a number and apply it by pressing Tab, Enter, or Esc — the field is applied according to its content:

  • field not empty → the constraint is locked to that value;
  • field empty → the lock is released (field cleared).

The only difference between the keys is where the focus goes after you apply:

  • Tab / Shift+Tab — to the next / previous field;
  • Enter — stay in this field (for tools like the polyline, also finish the construction);
  • Esc — return focus to the canvas; a second Esc (outside a field) cancels the tool's operation.

5. Layers, coordinate systems, isolation

Layers

Every object belongs to a layer. A layer defines:

  • Name and color (used when an object doesn't set its own color).
  • Visibility — invisible objects are excluded from rendering and snapping.
  • Lock — locked objects are drawn dimmed; snapping still works against them, but they can't be selected or edited.
  • Exclusion from topology building — to keep a layer out of face building, give it the noDcel tag (in the Layer Attributes). The same tag can be applied to an individual object, or through a class whose body is {noDcel}.
  • Layer Attributes — a shared set of tags/attributes for every object on the layer (edited in the right-hand Layer Attributes panel).

Coordinate systems (UCS)

You can create custom coordinate systems. Construction and coordinate entry are performed relative to the active CS.

  • World always exists; it can't be deleted or renamed.
  • There are two tools for creating a CS:
    • CS (origin + X) — two clicks: the origin and the direction of the X axis. The plane stays horizontal (the Z axis = world vertical).
    • CS (origin + X + Y) — three clicks: the origin, the direction of the X axis, and a point defining the XY plane. This lets you set an arbitrary tilted orientation in 3D.
  • The active CS affects: snap projection, coordinate entry (in local axes), axis display, standard views (T/F/L), and the plane of new objects.
  • Points are stored in world coordinates; input is interpreted in the active CS.

Object isolation

Temporary hiding (lives only in the current session — it isn't saved to the file) that works on whole objects:

Key Action
H Hide the selection.
I Isolate (show the selection, hide everything else).
Shift+H / Shift+I Show everything hidden.

6. Import

  • DXF — the interchange format for 2D drawings (drafting from other CAD systems). Z coordinates come in with the import.
  • GLB — an open, standard 3D format (geometry + PBR materials + textures; the "JPEG of 3D"). What gets imported is a self-contained .glb file — all geometry, textures, and materials are packed inside a single file. The text-based .gltf variant with external resources (separate geometry/texture files) is not supported. On import, a folder named after the file is created, containing the images, textures, materials, and the mesh itself. To place copies of the mesh in the drawing, use the PlaceMesh tool.

Imported meshes live "outside" the planar topology — they don't take part in face building.

7. Topology (faces and edges)

When you draw a plan — roads, intersections, lawns — the system automatically recognizes every closed face and the edges between them. There is no need to draw "fill outlines" by hand: topology is derived from the intersections of lines.

  • Faces and edges are built automatically from all intersections of the drawing's lines.
  • Construction always happens in the world XY plane (top-down plan); the active coordinate system has no effect on topology.
  • Any edit to the drawing triggers a reactive rebuild in the background — the interface never blocks.
  • A layer can be excluded from topology construction — give it the noDcel tag (under "Layer Attributes"; see §5). The same tag also works on an individual object.
  • Faces do not exist in the drawing as objects — select them with the FaceSelect tool (4).

Displaying topology: F2 is the master toggle for topology display (the colored face fill and all DCEL rendering turn on and off together); Shift+F2 is the diagnostic mode (shows half-edges and problem vertices).

8. Parameterization

Parameterization is how a 2D drawing becomes 3D. Elements carry tags and attributes that drive geometry generation.

Tags and attributes

  • Tag — a key with no value, for example road or grass. It acts as a label/class: only the "presence of the key" is checked.
  • Attribute — a key with a value, for example dz: -0.2 or material: asphalt. A specific value is checked.

They are assigned through the right-hand "Attributes" panel. Typing into the field (confirmed with Enter): a line with a : adds an attribute; a line without a : adds a tag. Attributes can be placed on:

  • Objects in the drawing (Polyline, Circle, Arc, Point, Image, MeshInstance);
  • Subobjects — individual vertices and segments of a polyline;
  • Faces of the topology (selected via FaceSelect);
  • Layers (the "Layer Attributes" panel).

Classes

A class is a named set of attributes. It is defined in a ContentClass node in the project tree (you can have several such nodes, organized by theme). Each class has a name and a body (a set of attributes).

A class is applied by assigning a tag whose name matches the class. For example, the class urban-street with the body road; dz: -0.1; material: asphalt expands as soon as you attach the urban-street tag to an object or face.

Priorities (cascade): a direct attribute overrides an attribute from a class; an object's attribute overrides a layer's attribute.

Face attributes

These control the geometry of the face itself. A face goes into 3D if it has at least one of the keys dz / material / slope / proj.

Attribute Syntax What it does Example
dz dz: <number> Constant height offset of the face (meters). dz: -0.2 (lower by 20 cm)
material material: <name> 3D material of the face (by the name of the material node in the project). material: asphalt
color color: <hex> Face fill color in DCEL mode (F2). Formats #RGB/#RRGGBB/#RRGGBBAA. color: #FF6600
proj proj: planar [sx] [sy] Texture projection (UV). Planar mode (XY); sx/sy are the tile size in meters. Without a size, 1:1. proj: planar 3 3 (3×3 m tile)
slope slope: <classes> Smooth grade: height is interpolated across the face between the levels of the named neighboring faces. slope: road roadHi

Edge and vertex attributes

Assigned to polyline segments/vertices to act locally on the joints between faces.

Attribute Syntax What it does
dz (on edge/vertex) dz: <n> <classes> [<n> <classes>] Local height offset of a specific adjacent face. Multi-group: a number opens a group, and the words after it are the classes it applies to.
normal: up normal: up [classes] Forces a vertical normal at the vertex — smooth shading on the sharp edge of a bevel.
offset offset: <d> <classes> Shifts the face outline in plan (XY) to pull it back from the template edge (so it doesn't run onto the curb). A "+" sign means inward, "−" means outward.
break break A boundary between layout strips: at this vertex/segment one template strip ends and the next begins, and each is laid out independently (see §9).
corner corner Forces a corner insert of the template at this vertex (see §9).

Multi-group example: dz: -0.15 grass sidewalk 0.1 road — on the side of the grass and sidewalk faces the edge is lowered by 15 cm, and on the side of road it is raised by 10 cm. This way a single edge can set a different height for each of its neighbors.

9. Templates along edges

A template is a complex piece of geometry (a curb, fence, railing, or guardrail) that the system automatically lays out along the edges of your model, taking length, bends, and corners into account. The topology comes from the plan, and the template itself is drawn like an ordinary drawing.

Basics (the T marker)

A template is a small closed contour split by an internal segment (path) into two faces. Each of the two faces carries class tags that describe which edges the template applies to (for example, the left face is road, the right face is grass). You can also attach tags and attributes to the dividing segment (path) itself: they refine the selection (the template is placed only on edges marked with the same tag) and control how copies are distributed along the edge (see Distribution). Inside the contour you place 3D meshes imported from GLB (with their materials and textures) and positioned with the PlaceMesh tool — these are what get laid out along the edge.

All objects of a template are tied together by a family name — the tag T: <name> (for example T: bordur). It must be present on every object of the template — on the contour faces and on the meshes alike. The most convenient approach is to create a separate layer for the template and attach T: <name> to it (in "Layer Attributes"): then every object on the layer inherits the tag automatically, and you don't have to set it on each object by hand.

How it is applied. The system takes each edge of your plan and looks at the tags of its two adjacent faces. If they match the tags of the template's left and right faces, the template is laid out along that edge. Where the template itself is drawn doesn't matter: templates are searched for across the whole project, so you can keep them off to the side or in a separate library drawing.

Template "bordur":        On the model:
  left face:  road           an edge with a road side and a grass side → matched,
  right face: grass           the curb is laid out along the edge

Roles (TR)

A single logical template (a "family") can consist of several contours with different roles — you draw each one separately and mark it with the tag TR: <role>. The system places the right role in the right spot along the strip.

Role Syntax Where it applies
Default TR: default or no TR The repeating "middle" segment along the whole length.
Begin TR: begin Once at the start of the strip (end cap).
End TR: end Once at the end of the strip (end cap).
Corner TR: corner / TR: corner>N Insert at corners. corner>N — only for bends ≥ N°; you can set several thresholds (the most suitable one is chosen for soft and sharp corners).

Any other TR value (not in the list) is treated as user-defined — it's used to separate sets of meshes within a family. The begin/end caps appear automatically at the boundaries of a stretch, and corners appear at bends; the fence "doesn't bend" at a turn.

Distribution along an edge

How exactly the template is repeated along an edge is set by tags/attributes on the template's internal edge (path). By default (with no tags) it uses "round-N" mode: the number of copies ≈ length ÷ template length, with each one stretched slightly.

Tag / attribute Syntax What it does
stretch stretch (tag) A single copy stretched over the whole length. Ignores n/clip.
n n: K Exactly K copies. Without clip each one is stretched; with clip — full-length copies with clipping.
clip clip / clip: start / clip: end / clip: center Copies are not stretched (full template length); the excess is clipped from the specified side (center by default).
minScale minScale: S Lower bound on a copy's scale (as a fraction of template length). round-N rounds the number of copies down so that the scale stays ≥ S; short stretches at a bend are bent rather than cut.
every every: K / every: Km Point insertion (slot): this contour is placed every K-th copy or every K meters. For posts, railings.
break break / break: N Cut the strip at bends: break — at every vertex, break: N — only for a bend ≥ N°. Each piece is repeated independently.
rigid rigid (tag) Rigid copies — they don't deform at corners, the length is fixed (for straight panels).
overlay overlay (tag) An additive family: it doesn't compete with the main template but is drawn on top of it. Use case: a shared curb + a railing on the same edges.
baseline baseline: <class> Raise/lower the Z of all the template's meshes to the surface level of the named adjacent face (so a curb sits on a sloped road instead of floating).
offset offset: <d> <classes> Offset the edge's adjacent faces in the plan (same grammar as edge-offset).

Examples: n: 4 — exactly 4 copies; clip: center — whole copies, clipped on both sides; n: 3 + clip: end — 3 whole copies, clipped on the right; break: 30 + minScale: 0.5 — cut at bends ≥ 30°, but don't shrink below 50%.

Per-mesh parameters in a template

You can attach extra attributes to a specific mesh (MeshInstance) inside a template:

Attribute Syntax What it does
snap snap / snap: begin / center / end / 75% / 0.3 The mesh's anchor within a copy: snap — to the nearest edge; a value — a fixed position (0…1 or a percentage). The mesh bends at bends but doesn't stretch.
rigid rigid This specific mesh doesn't deform (unlike rigid applied to the whole template).
bisector bisector / bisector: <N Rotate the mesh onto the bisector of the joint (optionally only for a bend ≤ N°).

“along” templates (open polyline)

If a template is applied not by faces but simply along the object itself (a fence along a lawn line, a railing along an edge), you can define it as an open polyline:

  • Draw an open polyline and attach the tag T: <name> to it (and, if you like, TR: + distribution tags). Its endpoints set the template's length and direction.
  • Place the geometry next to it (it goes to the left/right of the line).
  • On the target object (Polyline/Arc/Circle), set the attribute along: <name> — the template will be stretched along it, regardless of topology.
  • The direction is set by the vertex order (Polyline) or by the Reverse flag in the properties; it's shown by an arrow in point mode (F4).

10. 3D generation and export

The 3D scene is recomputed on command (not automatically — so that you stay in control of heavy builds):

  • Ctrl+B — build the 3D and turn its display on.
  • B — toggle the display of the generated geometry.
  • The bottom bar has a "3D" checkbox and a build button.

What goes into the build:

  1. Faces with the dz/material/slope/proj attributes — triangulated into a surface.
  2. Edges with templates (the T: tag) — geometry is laid out along them.
  3. Objects with along — a template is swept along the line.

Export. You can export the finished geometry from the menu: Export GLB writes the 3D scene to a .glb file (with all meshes and materials), and Export DXF produces a flat drawing. The result opens in Blender, 3ds Max, and other packages.

11. Undo / Redo

Every operation that modifies the project can be reversed. The history is linear and shared across the entire project: it is common to all drawings, so undo/redo carry over when you switch between drawings (Ctrl+Z undoes the last action even if it was made in a different drawing).

Keys Action
Ctrl+Z Undo
Ctrl+Shift+Z or Ctrl+Y Redo

Camera changes are not part of the history. Once you perform a new operation, the redo branch is discarded (as usual in editors).

12. Reference

Keyboard shortcuts

Camera and views

Key Action
T / F / L Top / Front / Left view (relative to the active CS)
P / O Perspective / Orthographic
C Center the camera on the cursor
Z Fit the scene/selection to the screen

Tools

Key Action
` Select (objects)
1 / 2 / 4 Select vertices / segments / faces
Q Last selection tool used
W / E / R Move / Rotate / Scale
Escape Cancel / exit the tool

Display

Key Action
F2 Toggle face fill (DCEL)
Shift+F2 DCEL diagnostics
F3 Wireframe
F4 Vertices
B Toggle 3D display
Ctrl+B Build 3D and show

Editing, clipboard, isolation

Key Action
Ctrl+Z / Ctrl+Shift+Z / Ctrl+Y Undo / Redo
Ctrl+C / Ctrl+X / Ctrl+V Copy / Cut / Paste
Ctrl+Shift+C Copy with a base point
H / I Hide / Isolate the selection
Shift+H / Shift+I Show everything hidden

Snaps and input

Key Action
S Toggle object snaps
Shift+S Snap settings
Shift+C Coordinate input settings
Tab / Shift+Tab Move between input fields
Enter Confirm the value / point

Coordinate input fields

Field Meaning
x, y, z Absolute coordinates
len Distance from the reference point
dx, dy, dz Offset from the reference point
ang Angle (degrees)

Attribute summary

Parametrization / faces

Key Type Purpose
dz attribute Height offset (meters); multi-group on an edge
material attribute 3D material of the face
color attribute Face fill color in DCEL mode
proj attribute Texture projection (planar + tile size)
slope attribute Smooth slope between neighbors
normal: up attribute Vertical normal at a vertex
offset attribute Offset the face outline in plan
along attribute Run a template along an object

Templates (tags/attributes)

Key Type Purpose
T tag / attribute Template marker (T: name)
TR attribute Role: default / begin / end / corner>N
stretch tag A single stretched copy
n attribute Number of copies
clip tag / attribute Full-length copies with clipping
minScale attribute Lower bound on copy scale
every attribute Point insertion (slot)
break tag / attribute Cut the strip at kinks
rigid tag Rigid (non-deformable) copies
overlay tag Additive family on top of the main one
baseline attribute Mesh height at the level of the neighboring face
snap tag / attribute Mesh anchor within a copy
bisector tag / attribute Rotate the mesh onto the joint bisector
corner tag Forced corner insertion at a vertex

We use cookies to operate the site and for anonymized visit analytics.