diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..5171c540 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +node_modules +npm-debug.log \ No newline at end of file diff --git a/README.md b/README.md index fad423fa..dd433027 100644 --- a/README.md +++ b/README.md @@ -1,45 +1,24 @@ # Project 4: Shape Grammar -For this assignment you'll be building directly off of Project 3. To make things easier to keep track of, please fork and clone this repository [https://github.com/CIS700-Procedural-Graphics/Project4-Shape-Grammar](https://github.com/CIS700-Procedural-Graphics/Project4-Shape-Grammar) and copy your Project 3 code to start. - -**Goal:** to model an urban environment using a shape grammar. - -**Note:** We’re well aware that a nice-looking procedural city is a lot of work for a single week. Focus on designing a nice building grammar. The city layout strategies outlined in class (the extended l-systems) are complex and not expected. We will be satisfied with something reasonably simple, just not a uniform grid! - -## Symbol Node (5 points) -Modify your symbol node class to include attributes necessary for rendering, such as -- Associated geometry instance -- Position -- Scale -- Anything else you may need - -## Grammar design (55 points) -- Design at least five shape grammar rules for producing procedural buildings. Your buildings should vary in geometry and decorative features (beyond just differently-scaled cubes!). At least some of your rules should create child geometry that is in some way dependent on its parent’s state. (20 points) - - Eg. A building may be subdivided along the x, y, or z axis into two smaller buildings - - Some of your rules must be designed to use some property about its location. (10 points) - - Your grammar should have some element of variation so your buildings are non-deterministic. Eg. your buildings sometimes subdivide along the x axis, and sometimes the y. (10 points) -- Write a renderer that will interpret the results of your shape grammar parser and adds the appropriate geometry to your scene for each symbol in your set. (10 points) - -## Create a city (30 points) -- Add a ground plane or some other base terrain to your scene (0 points, come on now) -- Using any strategy you’d like, procedurally generate features that demarcate your city into different areas in an interesting and plausible way (Just a uniform grid is neither interesting nor plausible). (20 points) - - Suggestions: roads, rivers, lakes, parks, high-population density - - Note, these features don’t have to be directly visible, like high-population density, but they should somehow be visible in the appearance or arrangement of your buildings. Eg. High population density is more likely to generate taller buildings -- Generate buildings throughout your city, using information about your city’s features. Color your buildings with a method that uses some aspect of its state. Eg. Color buildings by height, by population density, by number of rules used to generate it. (5 points) -- Document your grammar rules and general approach in the readme. (5 points) -- ??? -- Profit. - -## Make it interesting (10) -Experiment! Make your city a work of art. - - -## Warnings: -You can very easily blow up three.js with this assignment. With a very simple grammar, our medium quality machine was able to handle 100 buildings with 6 generations each, but be careful if you’re doing this all CPU-side. - -## Suggestions for the overachievers: -Go for a very high level of decorative detail! -Place buildings with a strategy such that buildings have doors and windows that are always accessible. -Generate buildings with coherent interiors -If dividing your city into lots, generate odd-shaped lots and create building meshes that match their shape ie. rather than working with cubes, extrude upwards from the building footprints you find to generate a starting mesh to subdivide rather than starting with platonic geometry. +[MINIS-TIRITH](https://mccannd.github.io/Project4-Shape-Grammar/) + +Mini-Minas Tirith! + +Controls: +-Iterate to advance the shape grammar stage +-Clear to completely reset the city. +-Volume to adjust the music + +Grammar rules: +-Each floor / tier will distribute houses radially according to a 'population map' which coincidentally modeled by perlin noise +-Walls can spawn towers and emplacements +-Emplacements can spawn more houses +-Houses can subdivide into more houses or halt with a roof +-The city will boost by one tier each iteration + +Other notes: +- Light is using shadow-mapping a directional light, and a hemisphere light. No custom shaders until I can figure out how to access the map +- Merging all of the meshes into one call is very helpful +- The mountain terrain is procedurally generated as well +- Once the city reaches its full height, a particular movie scene plays... \ No newline at end of file diff --git a/deploy.js b/deploy.js new file mode 100644 index 00000000..9defe7c3 --- /dev/null +++ b/deploy.js @@ -0,0 +1,38 @@ +var colors = require('colors'); +var path = require('path'); +var git = require('simple-git')(__dirname); +var deploy = require('gh-pages-deploy'); +var packageJSON = require('require-module')('./package.json'); + +var success = 1; +git.fetch('origin', 'master', function(err) { + if (err) throw err; + git.status(function(err, status) { + if (err) throw err; + if (!status.isClean()) { + success = 0; + console.error('Error: You have uncommitted changes! Please commit them first'.red); + } + + if (status.current !== 'master') { + success = 0; + console.warn('Warning: Please deploy from the master branch!'.yellow) + } + + git.diffSummary(['origin/master'], function(err, diff) { + if (err) throw err; + + if (diff.files.length || diff.insertions || diff.deletions) { + success = 0; + console.error('Error: Current branch is different from origin/master! Please push all changes first'.red) + } + + if (success) { + var cfg = packageJSON['gh-pages-deploy'] || {}; + var buildCmd = deploy.getFullCmd(cfg); + deploy.displayCmds(deploy.getFullCmd(cfg)); + deploy.execBuild(buildCmd, cfg); + } + }) + }) +}) \ No newline at end of file diff --git a/index.html b/index.html new file mode 100644 index 00000000..46609dd5 --- /dev/null +++ b/index.html @@ -0,0 +1,19 @@ + + + + HW4: ShapeGrammars + + + + + + diff --git a/package.json b/package.json new file mode 100644 index 00000000..be683fcb --- /dev/null +++ b/package.json @@ -0,0 +1,31 @@ +{ + "scripts": { + "start": "webpack-dev-server --hot --inline", + "build": "webpack", + "deploy": "node deploy.js" + }, + "gh-pages-deploy": { + "prep": [ + "build" + ], + "noprompt": true + }, + "dependencies": { + "dat-gui": "^0.5.0", + "gl-matrix": "^2.3.2", + "stats-js": "^1.0.0-alpha1", + "three": "^0.82.1", + "three-orbit-controls": "^82.1.0" + }, + "devDependencies": { + "babel-core": "^6.18.2", + "babel-loader": "^6.2.8", + "babel-preset-es2015": "^6.18.0", + "colors": "^1.1.2", + "gh-pages-deploy": "^0.4.2", + "simple-git": "^1.65.0", + "webpack": "^1.13.3", + "webpack-dev-server": "^1.16.2", + "webpack-glsl-loader": "^1.0.1" + } +} diff --git a/resources/angleroof.obj b/resources/angleroof.obj new file mode 100644 index 00000000..5fcac4b0 --- /dev/null +++ b/resources/angleroof.obj @@ -0,0 +1,438 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib angleroof.mtl +g default +v -0.447104 0.051801 0.447104 +v -0.057687 0.051801 0.447104 +v 0.057687 0.051801 0.447104 +v 0.447104 0.051801 0.447104 +v -0.447104 0.111262 0.447104 +v -0.057687 0.387130 0.447104 +v 0.057687 0.387130 0.447104 +v 0.447104 0.111262 0.447104 +v -0.447104 0.111262 -0.447104 +v -0.057687 0.387130 -0.447104 +v 0.057687 0.387130 -0.447104 +v 0.447104 0.111262 -0.447104 +v -0.447104 0.051801 -0.447104 +v -0.057687 0.051801 -0.447104 +v 0.057687 0.051801 -0.447104 +v 0.447104 0.051801 -0.447104 +v -0.360501 0.084505 0.447104 +v -0.037003 0.084505 0.447104 +v -0.037003 0.358230 0.447104 +v -0.360501 0.129887 0.447104 +v 0.037003 0.084505 0.447104 +v 0.037003 0.358230 0.447104 +v 0.360501 0.084505 0.447104 +v 0.360501 0.129887 0.447104 +v -0.360501 0.129887 -0.447104 +v -0.037003 0.358230 -0.447104 +v -0.037003 0.084505 -0.447104 +v -0.360501 0.084505 -0.447104 +v 0.037003 0.358230 -0.447104 +v 0.037003 0.084505 -0.447104 +v 0.360501 0.129887 -0.447104 +v 0.360501 0.084505 -0.447104 +v -0.360501 0.084505 0.380060 +v -0.037003 0.084505 0.380060 +v -0.037003 0.358230 0.380060 +v -0.360501 0.129887 0.380060 +v 0.037003 0.084505 0.380060 +v 0.037003 0.358230 0.380060 +v 0.360501 0.084505 0.380060 +v 0.360501 0.129887 0.380060 +v -0.360501 0.129887 -0.380060 +v -0.037003 0.358230 -0.380060 +v -0.037003 0.084505 -0.380060 +v -0.360501 0.084505 -0.380060 +v 0.037003 0.358230 -0.380060 +v 0.037003 0.084505 -0.380060 +v 0.360501 0.129887 -0.380060 +v 0.360501 0.084505 -0.380060 +v -0.493198 0.054143 -0.493198 +v -0.063635 0.054143 -0.493198 +v -0.063635 0.004038 -0.493198 +v -0.493198 0.004038 -0.493198 +v -0.493198 0.054143 0.493198 +v -0.063635 0.054143 0.493198 +v -0.493198 0.004038 0.493198 +v -0.063635 0.004038 0.493198 +v 0.063635 0.054143 -0.493198 +v 0.063635 0.004038 -0.493198 +v 0.063635 0.054143 0.493198 +v 0.063635 0.004038 0.493198 +v 0.493198 0.054143 -0.493198 +v 0.493198 0.004038 -0.493198 +v 0.493198 0.054143 0.493198 +v 0.493198 0.004038 0.493198 +vt 0.375000 0.000000 +vt 0.458333 0.000000 +vt 0.541667 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.458333 0.250000 +vt 0.541667 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.458333 0.500000 +vt 0.541667 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.458333 0.750000 +vt 0.541667 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.458333 1.000000 +vt 0.541667 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.375000 0.000000 +vt 0.458333 0.000000 +vt 0.458333 0.250000 +vt 0.375000 0.250000 +vt 0.541667 0.000000 +vt 0.541667 0.250000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.458333 0.500000 +vt 0.458333 0.750000 +vt 0.375000 0.750000 +vt 0.541667 0.500000 +vt 0.541667 0.750000 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.000000 +vt 0.458333 0.000000 +vt 0.458333 0.250000 +vt 0.375000 0.250000 +vt 0.541667 0.000000 +vt 0.541667 0.250000 +vt 0.625000 0.000000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.458333 0.500000 +vt 0.458333 0.750000 +vt 0.375000 0.750000 +vt 0.541667 0.500000 +vt 0.541667 0.750000 +vt 0.625000 0.500000 +vt 0.625000 0.750000 +vt 0.375000 0.750000 +vt 0.458333 0.750000 +vt 0.458333 0.750000 +vt 0.375000 0.750000 +vt 0.458333 1.000000 +vt 0.375000 1.000000 +vt 0.375000 1.000000 +vt 0.458333 1.000000 +vt 0.541667 0.750000 +vt 0.541667 0.750000 +vt 0.541667 1.000000 +vt 0.541667 1.000000 +vt 0.625000 0.750000 +vt 0.625000 0.750000 +vt 0.625000 1.000000 +vt 0.625000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.578061 0.815994 0.000000 +vn -0.578061 0.815994 0.000000 +vn -0.578061 0.815994 0.000000 +vn -0.578061 0.815994 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.578061 0.815994 0.000000 +vn 0.578061 0.815994 0.000000 +vn 0.578061 0.815994 0.000000 +vn 0.578061 0.815994 0.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -0.576668 -0.816978 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.576668 -0.816979 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -0.576668 -0.816978 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.050730 0.998712 0.000000 +vn 0.050730 0.998712 0.000000 +vn 0.050730 0.998712 0.000000 +vn 0.050730 0.998712 0.000000 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn 0.000000 0.998712 0.050730 +vn -0.050730 0.998712 0.000000 +vn -0.050730 0.998712 0.000000 +vn -0.050730 0.998712 0.000000 +vn -0.050730 0.998712 0.000000 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +vn 0.000000 0.998712 -0.050730 +s off +g pCube3 +usemtl initialShadingGroup +f 33/41/1 34/42/2 35/43/3 36/44/4 +f 34/42/5 37/45/6 38/46/7 35/43/8 +f 37/45/9 39/47/10 40/48/11 38/46/12 +f 5/5/13 6/6/14 10/10/15 9/9/16 +f 6/6/17 7/7/18 11/11/19 10/10/20 +f 7/7/21 8/8/22 12/12/23 11/11/24 +f 41/49/25 42/50/26 43/51/27 44/52/28 +f 42/50/29 45/53/30 46/54/31 43/51/32 +f 45/53/33 47/55/34 48/56/35 46/54/36 +f 4/4/37 16/21/38 12/22/39 8/8/40 +f 13/23/41 1/1/42 5/5/43 9/24/44 +f 1/1/45 2/2/46 18/26/47 17/25/48 +f 6/6/49 5/5/50 20/28/51 19/27/52 +f 5/5/53 1/1/54 17/25/55 20/28/56 +f 2/2/57 3/3/58 21/29/59 18/26/60 +f 7/7/61 6/6/62 19/27/63 22/30/64 +f 3/3/65 4/4/66 23/31/67 21/29/68 +f 4/4/69 8/8/70 24/32/71 23/31/72 +f 8/8/73 7/7/74 22/30/75 24/32/76 +f 9/9/77 10/10/78 26/34/79 25/33/80 +f 14/14/81 13/13/82 28/36/83 27/35/84 +f 13/13/85 9/9/86 25/33/87 28/36/88 +f 10/10/89 11/11/90 29/37/91 26/34/92 +f 15/15/93 14/14/94 27/35/95 30/38/96 +f 11/11/97 12/12/98 31/39/99 29/37/100 +f 12/12/101 16/16/102 32/40/103 31/39/104 +f 16/16/105 15/15/106 30/38/107 32/40/108 +f 17/25/109 18/26/110 34/42/111 33/41/112 +f 19/27/113 20/28/114 36/44/115 35/43/116 +f 20/28/117 17/25/118 33/41/119 36/44/120 +f 18/26/121 21/29/122 37/45/123 34/42/124 +f 22/30/125 19/27/126 35/43/127 38/46/128 +f 21/29/129 23/31/130 39/47/131 37/45/132 +f 23/31/133 24/32/134 40/48/135 39/47/136 +f 24/32/137 22/30/138 38/46/139 40/48/140 +f 25/33/141 26/34/142 42/50/143 41/49/144 +f 27/35/145 28/36/146 44/52/147 43/51/148 +f 28/36/149 25/33/150 41/49/151 44/52/152 +f 26/34/153 29/37/154 45/53/155 42/50/156 +f 30/38/157 27/35/158 43/51/159 46/54/160 +f 29/37/161 31/39/162 47/55/163 45/53/164 +f 31/39/165 32/40/166 48/56/167 47/55/168 +f 32/40/169 30/38/170 46/54/171 48/56/172 +f 49/57/173 50/58/174 51/59/175 52/60/176 +f 54/61/177 53/62/178 55/63/179 56/64/180 +f 53/62/181 49/57/182 52/60/183 55/63/184 +f 50/58/185 57/65/186 58/66/187 51/59/188 +f 59/67/189 54/61/190 56/64/191 60/68/192 +f 57/65/193 61/69/194 62/70/195 58/66/196 +f 61/69/197 63/71/198 64/72/199 62/70/200 +f 63/71/201 59/67/202 60/68/203 64/72/204 +f 13/13/205 14/14/206 50/58/207 49/57/208 +f 2/18/209 1/17/210 53/62/211 54/61/212 +f 1/17/213 13/13/214 49/57/215 53/62/216 +f 14/14/217 15/15/218 57/65/219 50/58/220 +f 3/19/221 2/18/222 54/61/223 59/67/224 +f 15/15/225 16/16/226 61/69/227 57/65/228 +f 16/16/229 4/20/230 63/71/231 61/69/232 +f 4/20/233 3/19/234 59/67/235 63/71/236 diff --git a/resources/archdoor.obj b/resources/archdoor.obj new file mode 100644 index 00000000..136f1d41 --- /dev/null +++ b/resources/archdoor.obj @@ -0,0 +1,400 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib archdoor.mtl +g default +v -0.190980 -0.286471 -0.000000 +v 0.190980 -0.286471 -0.000000 +v -0.190980 0.179437 0.000000 +v 0.190980 0.179437 0.000000 +v 0.089021 0.286471 0.000000 +v 0.089021 -0.286471 -0.000000 +v -0.089021 0.286471 0.000000 +v -0.089021 -0.286471 -0.000000 +v 0.089021 -0.286471 0.050176 +v 0.190980 -0.286471 0.050176 +v 0.190980 0.179437 0.050176 +v 0.089021 0.286471 0.050176 +v -0.089021 -0.286471 0.050176 +v -0.089021 0.286471 0.050176 +v -0.190980 -0.286471 0.050176 +v -0.190980 0.179437 0.050176 +v 0.072109 -0.232046 0.050176 +v 0.154698 -0.232046 0.050176 +v 0.154698 0.145347 0.050176 +v 0.072109 0.232046 0.050176 +v -0.072109 -0.232046 0.050176 +v -0.072109 0.232046 0.050176 +v -0.154698 -0.232046 0.050176 +v -0.154698 0.145347 0.050176 +v 0.072109 -0.232046 0.014705 +v 0.154698 -0.232046 0.014705 +v 0.154698 0.145347 0.014705 +v 0.072109 0.232046 0.014705 +v -0.072109 -0.232046 0.014705 +v -0.072109 0.232046 0.014705 +v -0.154698 -0.232046 0.014705 +v -0.154698 0.145347 0.014705 +v 0.089021 -0.326920 -0.000000 +v 0.190980 -0.326920 -0.000000 +v 0.190980 -0.326920 0.050176 +v 0.089021 -0.326920 0.050176 +v -0.089021 -0.326920 -0.000000 +v -0.089021 -0.326920 0.050176 +v -0.190980 -0.326920 -0.000000 +v -0.190980 -0.326920 0.050176 +v 0.089021 -0.286471 0.098868 +v 0.190980 -0.286471 0.098868 +v 0.089021 -0.326920 0.098868 +v 0.190980 -0.326920 0.098868 +v -0.089021 -0.286471 0.098868 +v -0.089021 -0.326920 0.098868 +v -0.190980 -0.286471 0.098868 +v -0.190980 -0.326920 0.098868 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 1.000000 +vt 1.000000 1.000000 +vt 0.666667 1.000000 +vt 0.666667 0.000000 +vt 0.333333 1.000000 +vt 0.333333 0.000000 +vt 0.666667 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.666667 1.000000 +vt 0.333333 0.000000 +vt 0.333333 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.666667 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.666667 1.000000 +vt 0.333333 0.000000 +vt 0.333333 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.666667 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.666667 1.000000 +vt 0.333333 0.000000 +vt 0.333333 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.666667 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.666667 1.000000 +vt 0.333333 0.000000 +vt 0.333333 1.000000 +vt 0.000000 0.000000 +vt 0.000000 1.000000 +vt 0.666667 0.000000 +vt 1.000000 0.000000 +vt 1.000000 0.000000 +vt 0.666667 0.000000 +vt 0.333333 0.000000 +vt 0.333333 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.666667 0.000000 +vt 0.666667 0.000000 +vt 1.000000 0.000000 +vt 0.333333 0.000000 +vt 0.333333 0.000000 +vt 0.000000 0.000000 +vt 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.724064 0.689733 -0.000000 +vn 0.724064 0.689733 -0.000000 +vn 0.724064 0.689733 -0.000000 +vn 0.724064 0.689733 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn -0.724064 0.689733 -0.000000 +vn -0.724064 0.689733 -0.000000 +vn -0.724064 0.689733 -0.000000 +vn -0.724064 0.689733 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 -0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.724063 -0.689734 0.000000 +vn -0.724063 -0.689733 0.000000 +vn -0.724063 -0.689734 0.000000 +vn -0.724063 -0.689733 0.000000 +vn -0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn -0.000000 1.000000 -0.000000 +vn 0.724063 -0.689734 0.000000 +vn 0.724063 -0.689734 0.000000 +vn 0.724063 -0.689734 0.000000 +vn 0.724063 -0.689734 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.000000 -1.000000 +vn 0.000000 -0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 -0.000000 -1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s 1 +g pPlane1 +usemtl initialShadingGroup +f 26/34/1 27/35/2 25/33/3 +f 25/33/3 27/35/2 28/36/4 +f 29/37/5 25/33/3 30/38/6 +f 30/38/6 25/33/3 28/36/4 +f 31/39/7 29/37/5 32/40/8 +f 32/40/8 29/37/5 30/38/6 +s 2 +f 5/12/9 4/11/10 6/9/11 +f 6/9/11 4/11/10 2/10/12 +f 8/13/13 7/14/14 6/9/11 +f 6/9/11 7/14/14 5/12/9 +f 1/15/15 3/16/16 8/13/13 +f 8/13/13 3/16/16 7/14/14 +s 4 +f 33/41/17 34/42/18 36/44/19 +f 36/44/19 34/42/18 35/43/20 +s 5 +f 2/2/21 4/4/22 10/18/23 +f 10/18/23 4/4/22 11/19/24 +s 6 +f 4/4/25 5/5/26 11/19/27 +f 11/19/27 5/5/26 12/20/28 +s 7 +f 37/45/29 33/41/30 38/46/31 +f 38/46/31 33/41/30 36/44/32 +s 8 +f 5/5/33 7/7/34 12/20/35 +f 12/20/35 7/7/34 14/22/36 +s 9 +f 39/47/37 37/45/38 40/48/39 +f 40/48/39 37/45/38 38/46/40 +s 10 +f 7/7/41 3/3/42 14/22/43 +f 14/22/43 3/3/42 16/24/44 +s 11 +f 3/3/45 1/1/46 16/24/47 +f 16/24/47 1/1/46 15/23/48 +s 12 +f 10/18/49 18/26/50 9/17/51 +f 9/17/51 18/26/50 17/25/52 +s 13 +f 10/18/53 11/19/54 18/26/55 +f 18/26/55 11/19/54 19/27/56 +s 14 +f 12/20/57 20/28/58 11/19/59 +f 11/19/59 20/28/58 19/27/60 +s 15 +f 13/21/61 9/17/62 21/29/63 +f 21/29/63 9/17/62 17/25/64 +s 16 +f 12/20/65 14/22/66 20/28/67 +f 20/28/67 14/22/66 22/30/68 +s 17 +f 15/23/69 13/21/70 23/31/71 +f 23/31/71 13/21/70 21/29/72 +s 18 +f 14/22/73 16/24/74 22/30/75 +f 22/30/75 16/24/74 24/32/76 +s 19 +f 15/23/77 23/31/78 16/24/79 +f 16/24/79 23/31/78 24/32/80 +s 20 +f 17/25/81 18/26/82 25/33/83 +f 25/33/83 18/26/82 26/34/84 +s 21 +f 18/26/85 19/27/86 26/34/87 +f 26/34/87 19/27/86 27/35/88 +s 22 +f 19/27/89 20/28/90 27/35/91 +f 27/35/91 20/28/90 28/36/92 +s 20 +f 21/29/93 17/25/81 29/37/94 +f 29/37/94 17/25/81 25/33/83 +s 23 +f 20/28/95 22/30/96 28/36/97 +f 28/36/97 22/30/96 30/38/98 +s 20 +f 23/31/99 21/29/93 31/39/100 +f 31/39/100 21/29/93 29/37/94 +s 24 +f 22/30/101 24/32/102 30/38/103 +f 30/38/103 24/32/102 32/40/104 +s 25 +f 24/32/105 23/31/106 32/40/107 +f 32/40/107 23/31/106 31/39/108 +s 2 +f 6/6/11 2/2/12 33/41/109 +f 33/41/109 2/2/12 34/42/110 +s 5 +f 2/2/21 10/18/23 34/42/111 +f 34/42/111 10/18/23 35/43/112 +s 26 +f 42/49/113 41/50/114 44/52/115 +f 44/52/115 41/50/114 43/51/116 +s 2 +f 8/8/13 6/6/11 37/45/117 +f 37/45/117 6/6/11 33/41/109 +s 26 +f 41/50/114 45/53/118 43/51/116 +f 43/51/116 45/53/118 46/54/119 +s 2 +f 1/1/15 8/8/13 39/47/120 +f 39/47/120 8/8/13 37/45/117 +s 26 +f 45/53/118 47/55/121 46/54/119 +f 46/54/119 47/55/121 48/56/122 +s 11 +f 15/23/48 1/1/46 40/48/123 +f 40/48/123 1/1/46 39/47/124 +s 27 +f 10/18/125 9/17/126 42/49/127 +f 42/49/127 9/17/126 41/50/128 +s 28 +f 36/44/129 35/43/130 43/51/131 +f 43/51/131 35/43/130 44/52/132 +s 29 +f 35/43/133 10/18/134 44/52/135 +f 44/52/135 10/18/134 42/49/136 +s 30 +f 9/17/137 13/21/138 41/50/139 +f 41/50/139 13/21/138 45/53/140 +s 31 +f 38/46/141 36/44/142 46/54/143 +f 46/54/143 36/44/142 43/51/144 +s 32 +f 13/21/145 15/23/146 45/53/147 +f 45/53/147 15/23/146 47/55/148 +s 33 +f 15/23/149 40/48/150 47/55/151 +f 47/55/151 40/48/150 48/56/152 +s 34 +f 40/48/153 38/46/154 48/56/155 +f 48/56/155 38/46/154 46/54/156 diff --git a/resources/arches.obj b/resources/arches.obj new file mode 100644 index 00000000..5557e149 --- /dev/null +++ b/resources/arches.obj @@ -0,0 +1,1210 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib arches.mtl +g default +v -0.500000 0.405686 0.500000 +v -0.300000 0.405686 0.500000 +v -0.100000 0.405686 0.500000 +v 0.100000 0.405686 0.500000 +v 0.300000 0.405686 0.500000 +v 0.500000 0.405686 0.500000 +v -0.500000 1.000000 0.500000 +v -0.300000 1.000000 0.500000 +v -0.100000 1.000000 0.500000 +v 0.100000 1.000000 0.500000 +v 0.300000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v -0.300000 1.000000 -0.500000 +v -0.100000 1.000000 -0.500000 +v 0.100000 1.000000 -0.500000 +v 0.300000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.405686 -0.500000 +v -0.300000 0.405686 -0.500000 +v -0.100000 0.405686 -0.500000 +v 0.100000 0.405686 -0.500000 +v 0.300000 0.405686 -0.500000 +v 0.500000 0.405686 -0.500000 +v -0.500000 0.000000 -0.500000 +v -0.300000 0.000000 -0.500000 +v -0.300000 0.000000 0.500000 +v -0.500000 0.000000 0.500000 +v -0.100000 0.000000 -0.500000 +v 0.100000 0.000000 -0.500000 +v 0.100000 0.000000 0.500000 +v -0.100000 0.000000 0.500000 +v 0.300000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.300000 0.000000 0.500000 +v -0.166667 0.470478 0.500000 +v -0.166667 1.000000 0.500000 +v -0.166667 1.000000 -0.500000 +v -0.166667 0.470478 -0.500000 +v -0.233333 0.470478 0.500000 +v -0.233333 1.000000 0.500000 +v -0.233333 1.000000 -0.500000 +v -0.233333 0.470478 -0.500000 +v 0.233333 0.470478 0.500000 +v 0.233333 1.000000 0.500000 +v 0.233333 1.000000 -0.500000 +v 0.233333 0.470478 -0.500000 +v 0.166667 0.470478 0.500000 +v 0.166667 1.000000 0.500000 +v 0.166667 1.000000 -0.500000 +v 0.166667 0.470478 -0.500000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.425000 0.250000 +vt 0.475000 0.250000 +vt 0.525000 0.250000 +vt 0.575000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.425000 0.500000 +vt 0.475000 0.500000 +vt 0.525000 0.500000 +vt 0.575000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.425000 1.000000 +vt 0.375000 1.000000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.525000 1.000000 +vt 0.475000 1.000000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.625000 1.000000 +vt 0.575000 1.000000 +vt 0.458333 0.000000 +vt 0.458333 1.000000 +vt 0.458333 0.250000 +vt 0.458333 0.500000 +vt 0.458333 0.750000 +vt 0.441667 0.000000 +vt 0.441667 1.000000 +vt 0.441667 0.250000 +vt 0.441667 0.500000 +vt 0.441667 0.750000 +vt 0.558333 0.000000 +vt 0.558333 1.000000 +vt 0.558333 0.250000 +vt 0.558333 0.500000 +vt 0.558333 0.750000 +vt 0.541667 0.000000 +vt 0.541667 1.000000 +vt 0.541667 0.250000 +vt 0.541667 0.500000 +vt 0.541667 0.750000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.696955 -0.717115 0.000000 +vn -0.696955 -0.717115 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.696955 -0.717115 0.000000 +vn -0.696954 -0.717115 0.000000 +s 1 +g pCube2 +usemtl initialShadingGroup +f 1/1/1 2/2/2 7/7/3 +f 7/7/3 2/2/2 8/8/4 +f 2/2/2 41/52/5 8/8/4 +f 8/8/4 41/52/5 42/54/6 +f 3/3/7 4/4/8 9/9/9 +f 9/9/9 4/4/8 10/10/10 +f 4/4/8 49/62/11 10/10/10 +f 10/10/10 49/62/11 50/64/12 +f 5/5/13 6/6/14 11/11/15 +f 11/11/15 6/6/14 12/12/16 +s 4 +f 7/7/17 8/8/18 13/13/19 +f 13/13/19 8/8/18 14/14/20 +f 8/8/18 42/54/21 14/14/20 +f 14/14/20 42/54/21 43/55/22 +f 9/9/23 10/10/24 15/15/25 +f 15/15/25 10/10/24 16/16/26 +f 10/10/24 50/64/27 16/16/26 +f 16/16/26 50/64/27 51/65/28 +f 11/11/29 12/12/30 17/17/31 +f 17/17/31 12/12/30 18/18/32 +s 7 +f 13/13/33 14/14/34 19/19/35 +f 19/19/35 14/14/34 20/20/36 +f 43/55/37 44/56/38 14/14/34 +f 14/14/34 44/56/38 20/20/36 +f 15/15/39 16/16/40 21/21/41 +f 21/21/41 16/16/40 22/22/42 +f 51/65/43 52/66/44 16/16/40 +f 16/16/40 52/66/44 22/22/42 +f 17/17/45 18/18/46 23/23/47 +f 23/23/47 18/18/46 24/24/48 +s 12 +f 25/35/49 26/36/50 28/38/51 +f 28/38/51 26/36/50 27/37/52 +s 13 +f 20/20/53 44/56/54 2/26/55 +f 2/26/55 44/56/54 41/53/56 +s 14 +f 29/39/57 30/40/58 32/42/59 +f 32/42/59 30/40/58 31/41/60 +s 15 +f 22/22/61 52/66/62 4/28/63 +f 4/28/63 52/66/62 49/63/64 +s 16 +f 33/43/65 34/44/66 36/46/67 +f 36/46/67 34/44/66 35/45/68 +s 17 +f 6/6/69 24/31/70 12/12/71 +f 12/12/71 24/31/70 18/32/72 +s 18 +f 19/33/73 1/1/74 13/34/75 +f 13/34/75 1/1/74 7/7/76 +s 19 +f 19/19/77 20/20/78 25/35/79 +f 25/35/79 20/20/78 26/36/80 +s 20 +f 20/20/81 2/26/82 26/36/83 +f 26/36/83 2/26/82 27/37/84 +s 21 +f 2/26/85 1/25/86 27/37/87 +f 27/37/87 1/25/86 28/38/88 +s 22 +f 1/25/89 19/19/90 28/38/91 +f 28/38/91 19/19/90 25/35/92 +s 23 +f 21/21/93 22/22/94 29/39/95 +f 29/39/95 22/22/94 30/40/96 +s 24 +f 22/22/97 4/28/98 30/40/99 +f 30/40/99 4/28/98 31/41/100 +s 25 +f 4/28/101 3/27/102 31/41/103 +f 31/41/103 3/27/102 32/42/104 +s 26 +f 3/27/105 21/21/106 32/42/107 +f 32/42/107 21/21/106 29/39/108 +s 27 +f 23/23/109 24/24/110 33/43/111 +f 33/43/111 24/24/110 34/44/112 +s 28 +f 24/24/113 6/30/114 34/44/115 +f 34/44/115 6/30/114 35/45/116 +s 29 +f 6/30/117 5/29/118 35/45/119 +f 35/45/119 5/29/118 36/46/120 +s 30 +f 5/29/121 23/23/122 36/46/123 +f 36/46/123 23/23/122 33/43/124 +s 1 +f 3/3/7 9/9/9 37/47/125 +f 37/47/125 9/9/9 38/49/126 +s 4 +f 39/50/127 38/49/128 15/15/25 +f 15/15/25 38/49/128 9/9/23 +s 7 +f 39/50/129 15/15/39 40/51/130 +f 40/51/130 15/15/39 21/21/41 +s 13 +f 37/48/131 40/51/132 3/27/133 +f 3/27/133 40/51/132 21/21/134 +s 1 +f 41/52/5 37/47/125 42/54/6 +f 42/54/6 37/47/125 38/49/126 +s 4 +f 43/55/22 42/54/21 39/50/127 +f 39/50/127 42/54/21 38/49/128 +s 7 +f 44/56/38 43/55/37 40/51/130 +f 40/51/130 43/55/37 39/50/129 +s 13 +f 41/53/56 44/56/54 37/48/131 +f 37/48/131 44/56/54 40/51/132 +s 1 +f 5/5/13 11/11/15 45/57/135 +f 45/57/135 11/11/15 46/59/136 +s 4 +f 47/60/137 46/59/138 17/17/31 +f 17/17/31 46/59/138 11/11/29 +s 7 +f 47/60/139 17/17/45 48/61/140 +f 48/61/140 17/17/45 23/23/47 +s 15 +f 45/58/141 48/61/142 5/29/143 +f 5/29/143 48/61/142 23/23/144 +s 1 +f 49/62/11 45/57/135 50/64/12 +f 50/64/12 45/57/135 46/59/136 +s 4 +f 51/65/28 50/64/27 47/60/137 +f 47/60/137 50/64/27 46/59/138 +s 7 +f 52/66/44 51/65/43 48/61/140 +f 48/61/140 51/65/43 47/60/139 +s 15 +f 49/63/64 52/66/62 45/58/141 +f 45/58/141 52/66/62 48/61/142 +g default +v -0.500000 0.405686 0.500000 +v -0.300000 0.405686 0.500000 +v -0.100000 0.405686 0.500000 +v 0.100000 0.405686 0.500000 +v 0.300000 0.405686 0.500000 +v 0.500000 0.405686 0.500000 +v -0.500000 1.000000 0.500000 +v -0.300000 1.000000 0.500000 +v -0.100000 1.000000 0.500000 +v 0.100000 1.000000 0.500000 +v 0.300000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v -0.300000 1.000000 -0.500000 +v -0.100000 1.000000 -0.500000 +v 0.100000 1.000000 -0.500000 +v 0.300000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.405686 -0.500000 +v -0.300000 0.405686 -0.500000 +v -0.100000 0.405686 -0.500000 +v 0.100000 0.405686 -0.500000 +v 0.300000 0.405686 -0.500000 +v 0.500000 0.405686 -0.500000 +v -0.500000 0.000000 -0.500000 +v -0.300000 0.000000 -0.500000 +v -0.300000 0.000000 0.500000 +v -0.500000 0.000000 0.500000 +v -0.100000 0.000000 -0.500000 +v 0.100000 0.000000 -0.500000 +v 0.100000 0.000000 0.500000 +v -0.100000 0.000000 0.500000 +v 0.300000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.300000 0.000000 0.500000 +v -0.166667 0.470478 0.500000 +v -0.166667 1.000000 0.500000 +v -0.166667 1.000000 -0.500000 +v -0.166667 0.470478 -0.500000 +v -0.233333 0.470478 0.500000 +v -0.233333 1.000000 0.500000 +v -0.233333 1.000000 -0.500000 +v -0.233333 0.470478 -0.500000 +v 0.233333 0.470478 0.500000 +v 0.233333 1.000000 0.500000 +v 0.233333 1.000000 -0.500000 +v 0.233333 0.470478 -0.500000 +v 0.166667 0.470478 0.500000 +v 0.166667 1.000000 0.500000 +v 0.166667 1.000000 -0.500000 +v 0.166667 0.470478 -0.500000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.425000 0.250000 +vt 0.475000 0.250000 +vt 0.525000 0.250000 +vt 0.575000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.425000 0.500000 +vt 0.475000 0.500000 +vt 0.525000 0.500000 +vt 0.575000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.425000 1.000000 +vt 0.375000 1.000000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.525000 1.000000 +vt 0.475000 1.000000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.625000 1.000000 +vt 0.575000 1.000000 +vt 0.458333 0.000000 +vt 0.458333 1.000000 +vt 0.458333 0.250000 +vt 0.458333 0.500000 +vt 0.458333 0.750000 +vt 0.441667 0.000000 +vt 0.441667 1.000000 +vt 0.441667 0.250000 +vt 0.441667 0.500000 +vt 0.441667 0.750000 +vt 0.558333 0.000000 +vt 0.558333 1.000000 +vt 0.558333 0.250000 +vt 0.558333 0.500000 +vt 0.558333 0.750000 +vt 0.541667 0.000000 +vt 0.541667 1.000000 +vt 0.541667 0.250000 +vt 0.541667 0.500000 +vt 0.541667 0.750000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.696955 -0.717115 0.000000 +vn -0.696955 -0.717115 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.696955 -0.717115 0.000000 +vn -0.696954 -0.717115 0.000000 +s 1 +g pCube2 +f 53/67/145 54/68/146 59/73/147 +f 59/73/147 54/68/146 60/74/148 +f 54/68/146 93/118/149 60/74/148 +f 60/74/148 93/118/149 94/120/150 +f 55/69/151 56/70/152 61/75/153 +f 61/75/153 56/70/152 62/76/154 +f 56/70/152 101/128/155 62/76/154 +f 62/76/154 101/128/155 102/130/156 +f 57/71/157 58/72/158 63/77/159 +f 63/77/159 58/72/158 64/78/160 +s 4 +f 59/73/161 60/74/162 65/79/163 +f 65/79/163 60/74/162 66/80/164 +f 60/74/162 94/120/165 66/80/164 +f 66/80/164 94/120/165 95/121/166 +f 61/75/167 62/76/168 67/81/169 +f 67/81/169 62/76/168 68/82/170 +f 62/76/168 102/130/171 68/82/170 +f 68/82/170 102/130/171 103/131/172 +f 63/77/173 64/78/174 69/83/175 +f 69/83/175 64/78/174 70/84/176 +s 7 +f 65/79/177 66/80/178 71/85/179 +f 71/85/179 66/80/178 72/86/180 +f 95/121/181 96/122/182 66/80/178 +f 66/80/178 96/122/182 72/86/180 +f 67/81/183 68/82/184 73/87/185 +f 73/87/185 68/82/184 74/88/186 +f 103/131/187 104/132/188 68/82/184 +f 68/82/184 104/132/188 74/88/186 +f 69/83/189 70/84/190 75/89/191 +f 75/89/191 70/84/190 76/90/192 +s 12 +f 77/101/193 78/102/194 80/104/195 +f 80/104/195 78/102/194 79/103/196 +s 13 +f 72/86/197 96/122/198 54/92/199 +f 54/92/199 96/122/198 93/119/200 +s 14 +f 81/105/201 82/106/202 84/108/203 +f 84/108/203 82/106/202 83/107/204 +s 15 +f 74/88/205 104/132/206 56/94/207 +f 56/94/207 104/132/206 101/129/208 +s 16 +f 85/109/209 86/110/210 88/112/211 +f 88/112/211 86/110/210 87/111/212 +s 17 +f 58/72/213 76/97/214 64/78/215 +f 64/78/215 76/97/214 70/98/216 +s 18 +f 71/99/217 53/67/218 65/100/219 +f 65/100/219 53/67/218 59/73/220 +s 19 +f 71/85/221 72/86/222 77/101/223 +f 77/101/223 72/86/222 78/102/224 +s 20 +f 72/86/225 54/92/226 78/102/227 +f 78/102/227 54/92/226 79/103/228 +s 21 +f 54/92/229 53/91/230 79/103/231 +f 79/103/231 53/91/230 80/104/232 +s 22 +f 53/91/233 71/85/234 80/104/235 +f 80/104/235 71/85/234 77/101/236 +s 23 +f 73/87/237 74/88/238 81/105/239 +f 81/105/239 74/88/238 82/106/240 +s 24 +f 74/88/241 56/94/242 82/106/243 +f 82/106/243 56/94/242 83/107/244 +s 25 +f 56/94/245 55/93/246 83/107/247 +f 83/107/247 55/93/246 84/108/248 +s 26 +f 55/93/249 73/87/250 84/108/251 +f 84/108/251 73/87/250 81/105/252 +s 27 +f 75/89/253 76/90/254 85/109/255 +f 85/109/255 76/90/254 86/110/256 +s 28 +f 76/90/257 58/96/258 86/110/259 +f 86/110/259 58/96/258 87/111/260 +s 29 +f 58/96/261 57/95/262 87/111/263 +f 87/111/263 57/95/262 88/112/264 +s 30 +f 57/95/265 75/89/266 88/112/267 +f 88/112/267 75/89/266 85/109/268 +s 1 +f 55/69/151 61/75/153 89/113/269 +f 89/113/269 61/75/153 90/115/270 +s 4 +f 91/116/271 90/115/272 67/81/169 +f 67/81/169 90/115/272 61/75/167 +s 7 +f 91/116/273 67/81/183 92/117/274 +f 92/117/274 67/81/183 73/87/185 +s 13 +f 89/114/275 92/117/276 55/93/277 +f 55/93/277 92/117/276 73/87/278 +s 1 +f 93/118/149 89/113/269 94/120/150 +f 94/120/150 89/113/269 90/115/270 +s 4 +f 95/121/166 94/120/165 91/116/271 +f 91/116/271 94/120/165 90/115/272 +s 7 +f 96/122/182 95/121/181 92/117/274 +f 92/117/274 95/121/181 91/116/273 +s 13 +f 93/119/200 96/122/198 89/114/275 +f 89/114/275 96/122/198 92/117/276 +s 1 +f 57/71/157 63/77/159 97/123/279 +f 97/123/279 63/77/159 98/125/280 +s 4 +f 99/126/281 98/125/282 69/83/175 +f 69/83/175 98/125/282 63/77/173 +s 7 +f 99/126/283 69/83/189 100/127/284 +f 100/127/284 69/83/189 75/89/191 +s 15 +f 97/124/285 100/127/286 57/95/287 +f 57/95/287 100/127/286 75/89/288 +s 1 +f 101/128/155 97/123/279 102/130/156 +f 102/130/156 97/123/279 98/125/280 +s 4 +f 103/131/172 102/130/171 99/126/281 +f 99/126/281 102/130/171 98/125/282 +s 7 +f 104/132/188 103/131/187 100/127/284 +f 100/127/284 103/131/187 99/126/283 +s 15 +f 101/129/208 104/132/206 97/124/285 +f 97/124/285 104/132/206 100/127/286 +g default +v -0.500000 0.405686 0.500000 +v -0.300000 0.405686 0.500000 +v -0.100000 0.405686 0.500000 +v 0.100000 0.405686 0.500000 +v 0.300000 0.405686 0.500000 +v 0.500000 0.405686 0.500000 +v -0.500000 1.000000 0.500000 +v -0.300000 1.000000 0.500000 +v -0.100000 1.000000 0.500000 +v 0.100000 1.000000 0.500000 +v 0.300000 1.000000 0.500000 +v 0.500000 1.000000 0.500000 +v -0.500000 1.000000 -0.500000 +v -0.300000 1.000000 -0.500000 +v -0.100000 1.000000 -0.500000 +v 0.100000 1.000000 -0.500000 +v 0.300000 1.000000 -0.500000 +v 0.500000 1.000000 -0.500000 +v -0.500000 0.405686 -0.500000 +v -0.300000 0.405686 -0.500000 +v -0.100000 0.405686 -0.500000 +v 0.100000 0.405686 -0.500000 +v 0.300000 0.405686 -0.500000 +v 0.500000 0.405686 -0.500000 +v -0.500000 0.000000 -0.500000 +v -0.300000 0.000000 -0.500000 +v -0.300000 0.000000 0.500000 +v -0.500000 0.000000 0.500000 +v -0.100000 0.000000 -0.500000 +v 0.100000 0.000000 -0.500000 +v 0.100000 0.000000 0.500000 +v -0.100000 0.000000 0.500000 +v 0.300000 0.000000 -0.500000 +v 0.500000 0.000000 -0.500000 +v 0.500000 0.000000 0.500000 +v 0.300000 0.000000 0.500000 +v -0.166667 0.470478 0.500000 +v -0.166667 1.000000 0.500000 +v -0.166667 1.000000 -0.500000 +v -0.166667 0.470478 -0.500000 +v -0.233333 0.470478 0.500000 +v -0.233333 1.000000 0.500000 +v -0.233333 1.000000 -0.500000 +v -0.233333 0.470478 -0.500000 +v 0.233333 0.470478 0.500000 +v 0.233333 1.000000 0.500000 +v 0.233333 1.000000 -0.500000 +v 0.233333 0.470478 -0.500000 +v 0.166667 0.470478 0.500000 +v 0.166667 1.000000 0.500000 +v 0.166667 1.000000 -0.500000 +v 0.166667 0.470478 -0.500000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.425000 0.250000 +vt 0.475000 0.250000 +vt 0.525000 0.250000 +vt 0.575000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.425000 0.500000 +vt 0.475000 0.500000 +vt 0.525000 0.500000 +vt 0.575000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.425000 1.000000 +vt 0.375000 1.000000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.525000 1.000000 +vt 0.475000 1.000000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.625000 1.000000 +vt 0.575000 1.000000 +vt 0.458333 0.000000 +vt 0.458333 1.000000 +vt 0.458333 0.250000 +vt 0.458333 0.500000 +vt 0.458333 0.750000 +vt 0.441667 0.000000 +vt 0.441667 1.000000 +vt 0.441667 0.250000 +vt 0.441667 0.500000 +vt 0.441667 0.750000 +vt 0.558333 0.000000 +vt 0.558333 1.000000 +vt 0.558333 0.250000 +vt 0.558333 0.500000 +vt 0.558333 0.750000 +vt 0.541667 0.000000 +vt 0.541667 1.000000 +vt 0.541667 0.250000 +vt 0.541667 0.500000 +vt 0.541667 0.750000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.696955 -0.717115 0.000000 +vn 0.437071 -0.899427 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.696955 -0.717115 0.000000 +vn -0.696955 -0.717115 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.437071 -0.899427 0.000000 +vn -0.696955 -0.717115 0.000000 +vn -0.696954 -0.717115 0.000000 +s 1 +g pCube2 +f 105/133/289 106/134/290 111/139/291 +f 111/139/291 106/134/290 112/140/292 +f 106/134/290 145/184/293 112/140/292 +f 112/140/292 145/184/293 146/186/294 +f 107/135/295 108/136/296 113/141/297 +f 113/141/297 108/136/296 114/142/298 +f 108/136/296 153/194/299 114/142/298 +f 114/142/298 153/194/299 154/196/300 +f 109/137/301 110/138/302 115/143/303 +f 115/143/303 110/138/302 116/144/304 +s 4 +f 111/139/305 112/140/306 117/145/307 +f 117/145/307 112/140/306 118/146/308 +f 112/140/306 146/186/309 118/146/308 +f 118/146/308 146/186/309 147/187/310 +f 113/141/311 114/142/312 119/147/313 +f 119/147/313 114/142/312 120/148/314 +f 114/142/312 154/196/315 120/148/314 +f 120/148/314 154/196/315 155/197/316 +f 115/143/317 116/144/318 121/149/319 +f 121/149/319 116/144/318 122/150/320 +s 7 +f 117/145/321 118/146/322 123/151/323 +f 123/151/323 118/146/322 124/152/324 +f 147/187/325 148/188/326 118/146/322 +f 118/146/322 148/188/326 124/152/324 +f 119/147/327 120/148/328 125/153/329 +f 125/153/329 120/148/328 126/154/330 +f 155/197/331 156/198/332 120/148/328 +f 120/148/328 156/198/332 126/154/330 +f 121/149/333 122/150/334 127/155/335 +f 127/155/335 122/150/334 128/156/336 +s 12 +f 129/167/337 130/168/338 132/170/339 +f 132/170/339 130/168/338 131/169/340 +s 13 +f 124/152/341 148/188/342 106/158/343 +f 106/158/343 148/188/342 145/185/344 +s 14 +f 133/171/345 134/172/346 136/174/347 +f 136/174/347 134/172/346 135/173/348 +s 15 +f 126/154/349 156/198/350 108/160/351 +f 108/160/351 156/198/350 153/195/352 +s 16 +f 137/175/353 138/176/354 140/178/355 +f 140/178/355 138/176/354 139/177/356 +s 17 +f 110/138/357 128/163/358 116/144/359 +f 116/144/359 128/163/358 122/164/360 +s 18 +f 123/165/361 105/133/362 117/166/363 +f 117/166/363 105/133/362 111/139/364 +s 19 +f 123/151/365 124/152/366 129/167/367 +f 129/167/367 124/152/366 130/168/368 +s 20 +f 124/152/369 106/158/370 130/168/371 +f 130/168/371 106/158/370 131/169/372 +s 21 +f 106/158/373 105/157/374 131/169/375 +f 131/169/375 105/157/374 132/170/376 +s 22 +f 105/157/377 123/151/378 132/170/379 +f 132/170/379 123/151/378 129/167/380 +s 23 +f 125/153/381 126/154/382 133/171/383 +f 133/171/383 126/154/382 134/172/384 +s 24 +f 126/154/385 108/160/386 134/172/387 +f 134/172/387 108/160/386 135/173/388 +s 25 +f 108/160/389 107/159/390 135/173/391 +f 135/173/391 107/159/390 136/174/392 +s 26 +f 107/159/393 125/153/394 136/174/395 +f 136/174/395 125/153/394 133/171/396 +s 27 +f 127/155/397 128/156/398 137/175/399 +f 137/175/399 128/156/398 138/176/400 +s 28 +f 128/156/401 110/162/402 138/176/403 +f 138/176/403 110/162/402 139/177/404 +s 29 +f 110/162/405 109/161/406 139/177/407 +f 139/177/407 109/161/406 140/178/408 +s 30 +f 109/161/409 127/155/410 140/178/411 +f 140/178/411 127/155/410 137/175/412 +s 1 +f 107/135/295 113/141/297 141/179/413 +f 141/179/413 113/141/297 142/181/414 +s 4 +f 143/182/415 142/181/416 119/147/313 +f 119/147/313 142/181/416 113/141/311 +s 7 +f 143/182/417 119/147/327 144/183/418 +f 144/183/418 119/147/327 125/153/329 +s 13 +f 141/180/419 144/183/420 107/159/421 +f 107/159/421 144/183/420 125/153/422 +s 1 +f 145/184/293 141/179/413 146/186/294 +f 146/186/294 141/179/413 142/181/414 +s 4 +f 147/187/310 146/186/309 143/182/415 +f 143/182/415 146/186/309 142/181/416 +s 7 +f 148/188/326 147/187/325 144/183/418 +f 144/183/418 147/187/325 143/182/417 +s 13 +f 145/185/344 148/188/342 141/180/419 +f 141/180/419 148/188/342 144/183/420 +s 1 +f 109/137/301 115/143/303 149/189/423 +f 149/189/423 115/143/303 150/191/424 +s 4 +f 151/192/425 150/191/426 121/149/319 +f 121/149/319 150/191/426 115/143/317 +s 7 +f 151/192/427 121/149/333 152/193/428 +f 152/193/428 121/149/333 127/155/335 +s 15 +f 149/190/429 152/193/430 109/161/431 +f 109/161/431 152/193/430 127/155/432 +s 1 +f 153/194/299 149/189/423 154/196/300 +f 154/196/300 149/189/423 150/191/424 +s 4 +f 155/197/316 154/196/315 151/192/425 +f 151/192/425 154/196/315 150/191/426 +s 7 +f 156/198/332 155/197/331 152/193/428 +f 152/193/428 155/197/331 151/192/427 +s 15 +f 153/195/352 156/198/350 149/190/429 +f 149/190/429 156/198/350 152/193/430 diff --git a/resources/denethor.jpg b/resources/denethor.jpg new file mode 100644 index 00000000..bac21483 Binary files /dev/null and b/resources/denethor.jpg differ diff --git a/resources/emplacement.obj b/resources/emplacement.obj new file mode 100644 index 00000000..59bbfc7a --- /dev/null +++ b/resources/emplacement.obj @@ -0,0 +1,295 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib emplacement.mtl +g default +v -0.500000 -0.376818 0.250000 +v -0.300000 -0.376818 0.250000 +v -0.100000 -0.376818 0.250000 +v 0.100000 -0.376818 0.250000 +v 0.300000 -0.376818 0.250000 +v 0.500000 -0.376818 0.250000 +v -0.500000 0.004471 0.250000 +v -0.300000 0.004471 0.250000 +v -0.100000 0.004471 0.250000 +v 0.100000 0.004471 0.250000 +v 0.300000 0.004471 0.250000 +v 0.500000 0.004471 0.250000 +v -0.500000 0.004471 -0.250000 +v -0.300000 0.004471 -0.250000 +v -0.100000 0.004471 -0.250000 +v 0.100000 0.004471 -0.250000 +v 0.300000 0.004471 -0.250000 +v 0.500000 0.004471 -0.250000 +v -0.500000 -0.376818 -0.250000 +v -0.300000 -0.376818 -0.250000 +v -0.100000 -0.376818 -0.250000 +v 0.100000 -0.376818 -0.250000 +v 0.300000 -0.376818 -0.250000 +v 0.500000 -0.376818 -0.250000 +v -0.500000 -0.995529 -0.250000 +v -0.300000 -0.995529 -0.250000 +v -0.100000 -0.995529 -0.250000 +v 0.100000 -0.995529 -0.250000 +v 0.300000 -0.995529 -0.250000 +v 0.500000 -0.995529 -0.250000 +v -0.166667 -0.303412 0.250000 +v -0.166667 0.004471 0.250000 +v -0.166667 0.004471 -0.250000 +v -0.166667 -0.303412 -0.250000 +v -0.233333 -0.303412 0.250000 +v -0.233333 0.004471 0.250000 +v -0.233333 0.004471 -0.250000 +v -0.233333 -0.303412 -0.250000 +v 0.233333 -0.303412 0.250000 +v 0.233333 0.004471 0.250000 +v 0.233333 0.004471 -0.250000 +v 0.233333 -0.303412 -0.250000 +v 0.166667 -0.303412 0.250000 +v 0.166667 0.004471 0.250000 +v 0.166667 0.004471 -0.250000 +v 0.166667 -0.303412 -0.250000 +vt 0.375000 0.000000 +vt 0.425000 0.000000 +vt 0.475000 0.000000 +vt 0.525000 0.000000 +vt 0.575000 0.000000 +vt 0.625000 0.000000 +vt 0.375000 0.250000 +vt 0.425000 0.250000 +vt 0.475000 0.250000 +vt 0.525000 0.250000 +vt 0.575000 0.250000 +vt 0.625000 0.250000 +vt 0.375000 0.500000 +vt 0.425000 0.500000 +vt 0.475000 0.500000 +vt 0.525000 0.500000 +vt 0.575000 0.500000 +vt 0.625000 0.500000 +vt 0.375000 0.750000 +vt 0.425000 0.750000 +vt 0.475000 0.750000 +vt 0.525000 0.750000 +vt 0.575000 0.750000 +vt 0.625000 0.750000 +vt 0.375000 1.000000 +vt 0.425000 1.000000 +vt 0.475000 1.000000 +vt 0.525000 1.000000 +vt 0.575000 1.000000 +vt 0.625000 1.000000 +vt 0.875000 0.000000 +vt 0.875000 0.250000 +vt 0.125000 0.000000 +vt 0.125000 0.250000 +vt 0.375000 0.875000 +vt 0.425000 0.875000 +vt 0.475000 0.875000 +vt 0.525000 0.875000 +vt 0.575000 0.875000 +vt 0.625000 0.875000 +vt 0.458333 0.000000 +vt 0.458333 1.000000 +vt 0.458333 0.250000 +vt 0.458333 0.500000 +vt 0.458333 0.750000 +vt 0.441667 0.000000 +vt 0.441667 1.000000 +vt 0.441667 0.250000 +vt 0.441667 0.500000 +vt 0.441667 0.750000 +vt 0.558333 0.000000 +vt 0.558333 1.000000 +vt 0.558333 0.250000 +vt 0.558333 0.500000 +vt 0.558333 0.750000 +vt 0.541667 0.000000 +vt 0.541667 1.000000 +vt 0.541667 0.250000 +vt 0.541667 0.500000 +vt 0.541667 0.750000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.740275 -0.672305 0.000000 +vn 0.482289 -0.876012 0.000000 +vn 0.740274 -0.672305 0.000000 +vn 0.482288 -0.876013 0.000000 +vn 0.740275 -0.672305 0.000000 +vn 0.482289 -0.876012 0.000000 +vn 0.740274 -0.672305 0.000000 +vn 0.482288 -0.876013 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn -0.000000 -0.628544 0.777774 +vn -0.000000 -0.628544 0.777774 +vn -0.000000 -0.628544 0.777774 +vn 0.000000 -0.628544 0.777774 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.482288 -0.876013 0.000000 +vn -0.482288 -0.876012 0.000000 +vn -0.740274 -0.672305 0.000000 +vn -0.740274 -0.672305 0.000000 +vn -0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn -0.482288 -0.876012 0.000000 +vn -0.482288 -0.876013 0.000000 +vn -0.740275 -0.672305 0.000000 +vn -0.740274 -0.672305 0.000000 +s 1 +g pCube1 +usemtl initialShadingGroup +f 1/1/1 2/2/2 7/7/3 +f 7/7/3 2/2/2 8/8/4 +f 2/2/2 35/46/5 8/8/4 +f 8/8/4 35/46/5 36/48/6 +f 3/3/7 4/4/8 9/9/9 +f 9/9/9 4/4/8 10/10/10 +f 4/4/8 43/56/11 10/10/10 +f 10/10/10 43/56/11 44/58/12 +f 5/5/13 6/6/14 11/11/15 +f 11/11/15 6/6/14 12/12/16 +s 4 +f 7/7/17 8/8/18 13/13/19 +f 13/13/19 8/8/18 14/14/20 +f 8/8/18 36/48/21 14/14/20 +f 14/14/20 36/48/21 37/49/22 +f 9/9/23 10/10/24 15/15/25 +f 15/15/25 10/10/24 16/16/26 +f 10/10/24 44/58/27 16/16/26 +f 16/16/26 44/58/27 45/59/28 +f 11/11/29 12/12/30 17/17/31 +f 17/17/31 12/12/30 18/18/32 +s 7 +f 20/20/33 38/50/34 2/26/35 +f 2/26/35 38/50/34 35/47/36 +s 8 +f 22/22/37 46/60/38 4/28/39 +f 4/28/39 46/60/38 43/57/40 +s 9 +f 6/6/41 24/31/42 12/12/43 +f 12/12/43 24/31/42 18/32/44 +s 10 +f 19/33/45 1/1/46 13/34/47 +f 13/34/47 1/1/46 7/7/48 +s off +f 20/20/49 2/26/50 26/36/51 +s 11 +f 2/26/52 1/25/53 26/36/54 +f 26/36/54 1/25/53 25/35/55 +s off +f 1/25/56 19/19/57 25/35/58 +f 22/22/59 4/28/60 28/38/61 +s 12 +f 4/28/62 3/27/63 28/38/64 +f 28/38/64 3/27/63 27/37/65 +s off +f 3/27/66 21/21/67 27/37/68 +f 24/24/69 6/30/70 30/40/71 +s 13 +f 6/30/72 5/29/73 30/40/74 +f 30/40/74 5/29/73 29/39/75 +s off +f 5/29/76 23/23/77 29/39/78 +s 1 +f 3/3/7 9/9/9 31/41/79 +f 31/41/79 9/9/9 32/43/80 +s 4 +f 33/44/81 32/43/82 15/15/25 +f 15/15/25 32/43/82 9/9/23 +s 7 +f 31/42/83 34/45/84 3/27/85 +f 3/27/85 34/45/84 21/21/86 +s 1 +f 35/46/5 31/41/79 36/48/6 +f 36/48/6 31/41/79 32/43/80 +s 4 +f 37/49/22 36/48/21 33/44/81 +f 33/44/81 36/48/21 32/43/82 +s 7 +f 35/47/36 38/50/34 31/42/83 +f 31/42/83 38/50/34 34/45/84 +s 1 +f 5/5/13 11/11/15 39/51/87 +f 39/51/87 11/11/15 40/53/88 +s 4 +f 41/54/89 40/53/90 17/17/31 +f 17/17/31 40/53/90 11/11/29 +s 8 +f 39/52/91 42/55/92 5/29/93 +f 5/29/93 42/55/92 23/23/94 +s 1 +f 43/56/11 39/51/87 44/58/12 +f 44/58/12 39/51/87 40/53/88 +s 4 +f 45/59/28 44/58/27 41/54/89 +f 41/54/89 44/58/27 40/53/90 +s 8 +f 43/57/40 46/60/38 39/52/91 +f 39/52/91 46/60/38 42/55/92 diff --git a/resources/gondor.mp3 b/resources/gondor.mp3 new file mode 100644 index 00000000..56f2e19d Binary files /dev/null and b/resources/gondor.mp3 differ diff --git a/resources/ring.obj b/resources/ring.obj new file mode 100644 index 00000000..30ec5f4f --- /dev/null +++ b/resources/ring.obj @@ -0,0 +1,435 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib ring.mtl +g default +v 0.975000 0.000000 -0.000000 +v 0.927280 0.000000 -0.301292 +v 0.788792 0.000000 -0.573091 +v 0.573091 0.000000 -0.788792 +v 0.301292 0.000000 -0.927280 +v -0.000000 0.000000 -0.975000 +v -0.301292 0.000000 -0.927280 +v -0.573091 0.000000 -0.788792 +v -0.788792 0.000000 -0.573091 +v -0.927280 0.000000 -0.301292 +v -0.975000 0.000000 0.000000 +v -0.927280 0.000000 0.301292 +v -0.788792 0.000000 0.573091 +v -0.573091 0.000000 0.788792 +v -0.301292 0.000000 0.927280 +v 0.000000 0.000000 0.975000 +v 0.301292 0.000000 0.927280 +v 0.573091 0.000000 0.788792 +v 0.788792 0.000000 0.573091 +v 0.927281 0.000000 0.301292 +v 0.975000 0.250000 0.000000 +v 0.927280 0.250000 -0.301292 +v 0.788792 0.250000 -0.573091 +v 0.573091 0.250000 -0.788792 +v 0.301292 0.250000 -0.927280 +v -0.000000 0.250000 -0.975000 +v -0.301292 0.250000 -0.927280 +v -0.573091 0.250000 -0.788792 +v -0.788792 0.250000 -0.573091 +v -0.927280 0.250000 -0.301292 +v -0.975000 0.250000 0.000000 +v -0.927280 0.250000 0.301292 +v -0.788792 0.250000 0.573091 +v -0.573091 0.250000 0.788792 +v -0.301292 0.250000 0.927280 +v 0.000000 0.250000 0.975000 +v 0.301292 0.250000 0.927280 +v 0.573091 0.250000 0.788792 +v 0.788792 0.250000 0.573091 +v 0.927281 0.250000 0.301292 +v 1.000000 0.250000 0.000000 +v 0.951057 0.250000 -0.309017 +v 0.809017 0.250000 -0.587785 +v 0.587785 0.250000 -0.809017 +v 0.309017 0.250000 -0.951057 +v -0.000000 0.250000 -1.000000 +v -0.309017 0.250000 -0.951057 +v -0.587785 0.250000 -0.809017 +v -0.809017 0.250000 -0.587785 +v -0.951057 0.250000 -0.309017 +v -1.000000 0.250000 0.000000 +v -0.951057 0.250000 0.309017 +v -0.809017 0.250000 0.587785 +v -0.587785 0.250000 0.809017 +v -0.309017 0.250000 0.951057 +v 0.000000 0.250000 1.000000 +v 0.309017 0.250000 0.951057 +v 0.587786 0.250000 0.809017 +v 0.809018 0.250000 0.587786 +v 0.951057 0.250000 0.309017 +v 1.000000 0.000000 -0.000000 +v 0.951057 0.000000 -0.309017 +v 0.809017 0.000000 -0.587785 +v 0.587785 0.000000 -0.809017 +v 0.309017 0.000000 -0.951057 +v -0.000000 0.000000 -1.000000 +v -0.309017 0.000000 -0.951057 +v -0.587785 0.000000 -0.809017 +v -0.809017 0.000000 -0.587785 +v -0.951057 0.000000 -0.309017 +v -1.000000 0.000000 -0.000000 +v -0.951057 0.000000 0.309017 +v -0.809017 0.000000 0.587785 +v -0.587785 0.000000 0.809017 +v -0.309017 0.000000 0.951057 +v 0.000000 0.000000 1.000000 +v 0.309017 0.000000 0.951057 +v 0.587786 0.000000 0.809017 +v 0.809018 0.000000 0.587786 +v 0.951057 0.000000 0.309017 +vt 0.000000 1.000000 +vt 0.050000 1.000000 +vt 0.100000 1.000000 +vt 0.150000 1.000000 +vt 0.200000 1.000000 +vt 0.250000 1.000000 +vt 0.300000 1.000000 +vt 0.350000 1.000000 +vt 0.400000 1.000000 +vt 0.450000 1.000000 +vt 0.500000 1.000000 +vt 0.550000 1.000000 +vt 0.600000 1.000000 +vt 0.650000 1.000000 +vt 0.700000 1.000000 +vt 0.750000 1.000000 +vt 0.800000 1.000000 +vt 0.850000 1.000000 +vt 0.900000 1.000000 +vt 0.950000 1.000000 +vt 1.000000 1.000000 +vt 0.000000 0.750000 +vt 0.050000 0.750000 +vt 0.100000 0.750000 +vt 0.150000 0.750000 +vt 0.200000 0.750000 +vt 0.250000 0.750000 +vt 0.300000 0.750000 +vt 0.350000 0.750000 +vt 0.400000 0.750000 +vt 0.450000 0.750000 +vt 0.500000 0.750000 +vt 0.550000 0.750000 +vt 0.600000 0.750000 +vt 0.650000 0.750000 +vt 0.700000 0.750000 +vt 0.750000 0.750000 +vt 0.800000 0.750000 +vt 0.850000 0.750000 +vt 0.900000 0.750000 +vt 0.950000 0.750000 +vt 1.000000 0.750000 +vt 0.000000 0.500000 +vt 0.050000 0.500000 +vt 0.100000 0.500000 +vt 0.150000 0.500000 +vt 0.200000 0.500000 +vt 0.250000 0.500000 +vt 0.300000 0.500000 +vt 0.350000 0.500000 +vt 0.400000 0.500000 +vt 0.450000 0.500000 +vt 0.500000 0.500000 +vt 0.550000 0.500000 +vt 0.600000 0.500000 +vt 0.650000 0.500000 +vt 0.700000 0.500000 +vt 0.750000 0.500000 +vt 0.800000 0.500000 +vt 0.850000 0.500000 +vt 0.900000 0.500000 +vt 0.950000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.250000 +vt 0.050000 0.250000 +vt 0.100000 0.250000 +vt 0.150000 0.250000 +vt 0.200000 0.250000 +vt 0.250000 0.250000 +vt 0.300000 0.250000 +vt 0.350000 0.250000 +vt 0.400000 0.250000 +vt 0.450000 0.250000 +vt 0.500000 0.250000 +vt 0.550000 0.250000 +vt 0.600000 0.250000 +vt 0.650000 0.250000 +vt 0.700000 0.250000 +vt 0.750000 0.250000 +vt 0.800000 0.250000 +vt 0.850000 0.250000 +vt 0.900000 0.250000 +vt 0.950000 0.250000 +vt 1.000000 0.250000 +vt 0.000000 0.000000 +vt 0.050000 0.000000 +vt 0.100000 0.000000 +vt 0.150000 0.000000 +vt 0.200000 0.000000 +vt 0.250000 0.000000 +vt 0.300000 0.000000 +vt 0.350000 0.000000 +vt 0.400000 0.000000 +vt 0.450000 0.000000 +vt 0.500000 0.000000 +vt 0.550000 0.000000 +vt 0.600000 0.000000 +vt 0.650000 0.000000 +vt 0.700000 0.000000 +vt 0.750000 0.000000 +vt 0.800000 0.000000 +vt 0.850000 0.000000 +vt 0.900000 0.000000 +vt 0.950000 0.000000 +vt 1.000000 0.000000 +vn -0.951057 0.000000 0.309017 +vn -1.000000 0.000000 0.000001 +vn -1.000000 0.000000 0.000001 +vn -0.951057 0.000000 0.309017 +vn -0.809017 0.000000 0.587785 +vn -0.809017 0.000000 0.587785 +vn -0.587785 0.000000 0.809017 +vn -0.587785 0.000000 0.809017 +vn -0.309017 0.000000 0.951057 +vn -0.309017 0.000000 0.951057 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.309017 0.000000 0.951057 +vn 0.309017 0.000000 0.951057 +vn 0.587785 0.000000 0.809017 +vn 0.587785 0.000000 0.809017 +vn 0.809017 0.000000 0.587785 +vn 0.809017 0.000000 0.587785 +vn 0.951057 0.000000 0.309017 +vn 0.951057 0.000000 0.309017 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.951057 0.000000 -0.309017 +vn 0.951057 0.000000 -0.309017 +vn 0.809017 0.000000 -0.587785 +vn 0.809017 0.000000 -0.587785 +vn 0.587785 0.000000 -0.809017 +vn 0.587785 0.000000 -0.809017 +vn 0.309017 0.000000 -0.951056 +vn 0.309017 0.000000 -0.951056 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.309017 0.000000 -0.951057 +vn -0.309017 0.000000 -0.951057 +vn -0.587785 0.000000 -0.809017 +vn -0.587785 0.000000 -0.809017 +vn -0.809017 0.000000 -0.587785 +vn -0.809017 0.000000 -0.587785 +vn -0.951057 0.000000 -0.309016 +vn -0.951057 0.000000 -0.309016 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.951057 0.000000 -0.309017 +vn 1.000000 -0.000000 -0.000001 +vn 1.000000 -0.000000 -0.000001 +vn 0.951057 0.000000 -0.309017 +vn 0.809017 0.000000 -0.587785 +vn 0.809017 0.000000 -0.587785 +vn 0.587785 0.000000 -0.809017 +vn 0.587785 0.000000 -0.809017 +vn 0.309017 0.000000 -0.951057 +vn 0.309017 0.000000 -0.951057 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -0.309017 0.000000 -0.951057 +vn -0.309017 0.000000 -0.951057 +vn -0.587785 0.000000 -0.809017 +vn -0.587785 0.000000 -0.809017 +vn -0.809017 0.000000 -0.587785 +vn -0.809017 0.000000 -0.587785 +vn -0.951057 0.000000 -0.309017 +vn -0.951057 0.000000 -0.309017 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -0.951057 0.000000 0.309017 +vn -0.951057 0.000000 0.309017 +vn -0.809017 0.000000 0.587785 +vn -0.809017 0.000000 0.587785 +vn -0.587785 0.000000 0.809017 +vn -0.587785 0.000000 0.809017 +vn -0.309017 0.000000 0.951056 +vn -0.309017 0.000000 0.951056 +vn -0.000000 0.000000 1.000000 +vn -0.000000 0.000000 1.000000 +vn 0.309017 0.000000 0.951057 +vn 0.309017 0.000000 0.951057 +vn 0.587785 0.000000 0.809017 +vn 0.587785 0.000000 0.809017 +vn 0.809017 0.000000 0.587785 +vn 0.809017 0.000000 0.587785 +vn 0.951057 -0.000000 0.309016 +vn 0.951057 -0.000000 0.309016 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s 1 +g pPipe1 +usemtl initialShadingGroup +f 2/2/1 1/1/2 21/22/3 22/23/4 +f 3/3/5 2/2/1 22/23/4 23/24/6 +f 4/4/7 3/3/5 23/24/6 24/25/8 +f 5/5/9 4/4/7 24/25/8 25/26/10 +f 6/6/11 5/5/9 25/26/10 26/27/12 +f 7/7/13 6/6/11 26/27/12 27/28/14 +f 8/8/15 7/7/13 27/28/14 28/29/16 +f 9/9/17 8/8/15 28/29/16 29/30/18 +f 10/10/19 9/9/17 29/30/18 30/31/20 +f 11/11/21 10/10/19 30/31/20 31/32/22 +f 12/12/23 11/11/21 31/32/22 32/33/24 +f 13/13/25 12/12/23 32/33/24 33/34/26 +f 14/14/27 13/13/25 33/34/26 34/35/28 +f 15/15/29 14/14/27 34/35/28 35/36/30 +f 16/16/31 15/15/29 35/36/30 36/37/32 +f 17/17/33 16/16/31 36/37/32 37/38/34 +f 18/18/35 17/17/33 37/38/34 38/39/36 +f 19/19/37 18/18/35 38/39/36 39/40/38 +f 20/20/39 19/19/37 39/40/38 40/41/40 +f 1/21/2 20/20/39 40/41/40 21/42/3 +s 2 +f 22/23/41 21/22/42 41/43/43 42/44/44 +f 23/24/45 22/23/41 42/44/44 43/45/46 +f 24/25/47 23/24/45 43/45/46 44/46/48 +f 25/26/49 24/25/47 44/46/48 45/47/50 +f 26/27/51 25/26/49 45/47/50 46/48/52 +f 27/28/53 26/27/51 46/48/52 47/49/54 +f 28/29/55 27/28/53 47/49/54 48/50/56 +f 29/30/57 28/29/55 48/50/56 49/51/58 +f 30/31/59 29/30/57 49/51/58 50/52/60 +f 31/32/61 30/31/59 50/52/60 51/53/62 +f 32/33/63 31/32/61 51/53/62 52/54/64 +f 33/34/65 32/33/63 52/54/64 53/55/66 +f 34/35/67 33/34/65 53/55/66 54/56/68 +f 35/36/69 34/35/67 54/56/68 55/57/70 +f 36/37/71 35/36/69 55/57/70 56/58/72 +f 37/38/73 36/37/71 56/58/72 57/59/74 +f 38/39/75 37/38/73 57/59/74 58/60/76 +f 39/40/77 38/39/75 58/60/76 59/61/78 +f 40/41/79 39/40/77 59/61/78 60/62/80 +f 21/42/42 40/41/79 60/62/80 41/63/43 +s 3 +f 42/44/81 41/43/82 61/64/83 62/65/84 +f 43/45/85 42/44/81 62/65/84 63/66/86 +f 44/46/87 43/45/85 63/66/86 64/67/88 +f 45/47/89 44/46/87 64/67/88 65/68/90 +f 46/48/91 45/47/89 65/68/90 66/69/92 +f 47/49/93 46/48/91 66/69/92 67/70/94 +f 48/50/95 47/49/93 67/70/94 68/71/96 +f 49/51/97 48/50/95 68/71/96 69/72/98 +f 50/52/99 49/51/97 69/72/98 70/73/100 +f 51/53/101 50/52/99 70/73/100 71/74/102 +f 52/54/103 51/53/101 71/74/102 72/75/104 +f 53/55/105 52/54/103 72/75/104 73/76/106 +f 54/56/107 53/55/105 73/76/106 74/77/108 +f 55/57/109 54/56/107 74/77/108 75/78/110 +f 56/58/111 55/57/109 75/78/110 76/79/112 +f 57/59/113 56/58/111 76/79/112 77/80/114 +f 58/60/115 57/59/113 77/80/114 78/81/116 +f 59/61/117 58/60/115 78/81/116 79/82/118 +f 60/62/119 59/61/117 79/82/118 80/83/120 +f 41/63/82 60/62/119 80/83/120 61/84/83 +s 4 +f 62/65/121 61/64/122 1/85/123 2/86/124 +f 63/66/125 62/65/121 2/86/124 3/87/126 +f 64/67/127 63/66/125 3/87/126 4/88/128 +f 65/68/129 64/67/127 4/88/128 5/89/130 +f 66/69/131 65/68/129 5/89/130 6/90/132 +f 67/70/133 66/69/131 6/90/132 7/91/134 +f 68/71/135 67/70/133 7/91/134 8/92/136 +f 69/72/137 68/71/135 8/92/136 9/93/138 +f 70/73/139 69/72/137 9/93/138 10/94/140 +f 71/74/141 70/73/139 10/94/140 11/95/142 +f 72/75/143 71/74/141 11/95/142 12/96/144 +f 73/76/145 72/75/143 12/96/144 13/97/146 +f 74/77/147 73/76/145 13/97/146 14/98/148 +f 75/78/149 74/77/147 14/98/148 15/99/150 +f 76/79/151 75/78/149 15/99/150 16/100/152 +f 77/80/153 76/79/151 16/100/152 17/101/154 +f 78/81/155 77/80/153 17/101/154 18/102/156 +f 79/82/157 78/81/155 18/102/156 19/103/158 +f 80/83/159 79/82/157 19/103/158 20/104/160 +f 61/84/122 80/83/159 20/104/160 1/105/123 diff --git a/resources/roundroof.obj b/resources/roundroof.obj new file mode 100644 index 00000000..527a040d --- /dev/null +++ b/resources/roundroof.obj @@ -0,0 +1,557 @@ +# This file uses centimeters as units for non-parametric coordinates. + +mtllib roundroof.mtl +g default +v 0.339244 0.127000 -0.339245 +v 0.000000 0.127000 -0.479764 +v -0.339244 0.127000 -0.339245 +v -0.479764 0.127000 0.000000 +v -0.339244 0.127000 0.339245 +v 0.000000 0.127000 0.479764 +v 0.339244 0.127000 0.339245 +v 0.479764 0.127000 0.000000 +v 0.322640 0.315681 -0.322641 +v 0.000000 0.315681 -0.456283 +v -0.322640 0.315681 -0.322641 +v -0.456283 0.315681 0.000000 +v -0.322640 0.315681 0.322641 +v 0.000000 0.315681 0.456283 +v 0.322640 0.315681 0.322641 +v 0.456283 0.315681 0.000000 +v 0.274454 0.463443 -0.274455 +v 0.000000 0.463443 -0.388137 +v -0.274454 0.463443 -0.274455 +v -0.388137 0.463443 0.000000 +v -0.274454 0.463443 0.274455 +v 0.000000 0.463443 0.388137 +v 0.274454 0.463443 0.274455 +v 0.388137 0.463443 0.000000 +v 0.199403 0.580708 -0.199403 +v 0.000000 0.580708 -0.281998 +v -0.199403 0.580708 -0.199403 +v -0.281998 0.580708 0.000000 +v -0.199403 0.580708 0.199403 +v 0.000000 0.580708 0.281998 +v 0.199403 0.580708 0.199403 +v 0.281998 0.580708 0.000000 +v 0.104832 0.655997 -0.104832 +v 0.000000 0.655997 -0.148255 +v -0.104832 0.655997 -0.104832 +v -0.148255 0.655997 0.000000 +v -0.104832 0.655997 0.104832 +v 0.000000 0.655997 0.148255 +v 0.104832 0.655997 0.104832 +v 0.148255 0.655997 0.000000 +v 0.000000 0.659219 0.000000 +v 0.500000 0.127000 -0.500000 +v 0.000000 0.127000 -0.500000 +v 0.500000 0.002000 -0.500000 +v 0.000000 0.002000 -0.500000 +v -0.500000 0.127000 -0.500000 +v -0.500000 0.002000 -0.500000 +v -0.500000 0.127000 0.000000 +v -0.500000 0.002000 0.000000 +v -0.500000 0.127000 0.500000 +v -0.500000 0.002000 0.500000 +v 0.000000 0.127000 0.500000 +v 0.000000 0.002000 0.500000 +v 0.500000 0.127000 0.500000 +v 0.500000 0.002000 0.500000 +v 0.500000 0.127000 0.000000 +v 0.500000 0.002000 0.000000 +v 0.000000 0.002000 0.000000 +vt 0.000000 0.500000 +vt 0.125000 0.500000 +vt 0.250000 0.500000 +vt 0.375000 0.500000 +vt 0.500000 0.500000 +vt 0.625000 0.500000 +vt 0.750000 0.500000 +vt 0.875000 0.500000 +vt 1.000000 0.500000 +vt 0.000000 0.600000 +vt 0.125000 0.600000 +vt 0.250000 0.600000 +vt 0.375000 0.600000 +vt 0.500000 0.600000 +vt 0.625000 0.600000 +vt 0.750000 0.600000 +vt 0.875000 0.600000 +vt 1.000000 0.600000 +vt 0.000000 0.700000 +vt 0.125000 0.700000 +vt 0.250000 0.700000 +vt 0.375000 0.700000 +vt 0.500000 0.700000 +vt 0.625000 0.700000 +vt 0.750000 0.700000 +vt 0.875000 0.700000 +vt 1.000000 0.700000 +vt 0.000000 0.800000 +vt 0.125000 0.800000 +vt 0.250000 0.800000 +vt 0.375000 0.800000 +vt 0.500000 0.800000 +vt 0.625000 0.800000 +vt 0.750000 0.800000 +vt 0.875000 0.800000 +vt 1.000000 0.800000 +vt 0.000000 0.900000 +vt 0.125000 0.900000 +vt 0.250000 0.900000 +vt 0.375000 0.900000 +vt 0.500000 0.900000 +vt 0.625000 0.900000 +vt 0.750000 0.900000 +vt 0.875000 0.900000 +vt 1.000000 0.900000 +vt 0.187500 1.000000 +vt 0.437500 1.000000 +vt 0.687500 1.000000 +vt 0.937500 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vt 0.500000 1.000000 +vn 0.380179 0.114225 -0.917833 +vn 0.380179 0.114225 -0.917833 +vn 0.380179 0.114225 -0.917833 +vn 0.380179 0.114224 -0.917833 +vn -0.380179 0.114224 -0.917833 +vn -0.380179 0.114225 -0.917833 +vn -0.380179 0.114224 -0.917833 +vn -0.380179 0.114225 -0.917833 +vn -0.917833 0.114225 -0.380179 +vn -0.917833 0.114225 -0.380179 +vn -0.917833 0.114225 -0.380179 +vn -0.917833 0.114225 -0.380179 +vn -0.917833 0.114225 0.380179 +vn -0.917833 0.114225 0.380179 +vn -0.917833 0.114225 0.380179 +vn -0.917833 0.114225 0.380179 +vn -0.380179 0.114225 0.917833 +vn -0.380179 0.114225 0.917833 +vn -0.380179 0.114225 0.917833 +vn -0.380179 0.114224 0.917833 +vn 0.380179 0.114224 0.917833 +vn 0.380179 0.114224 0.917833 +vn 0.380179 0.114224 0.917833 +vn 0.380179 0.114224 0.917833 +vn 0.917833 0.114224 0.380179 +vn 0.917833 0.114225 0.380179 +vn 0.917833 0.114225 0.380179 +vn 0.917833 0.114225 0.380179 +vn 0.917833 0.114225 -0.380179 +vn 0.917833 0.114225 -0.380179 +vn 0.917833 0.114225 -0.380179 +vn 0.917833 0.114225 -0.380179 +vn 0.352059 0.391980 -0.849945 +vn 0.352059 0.391980 -0.849945 +vn 0.352059 0.391980 -0.849945 +vn 0.352059 0.391980 -0.849945 +vn -0.352059 0.391980 -0.849945 +vn -0.352059 0.391980 -0.849945 +vn -0.352059 0.391980 -0.849945 +vn -0.352059 0.391980 -0.849945 +vn -0.849945 0.391980 -0.352059 +vn -0.849945 0.391979 -0.352059 +vn -0.849945 0.391980 -0.352059 +vn -0.849945 0.391979 -0.352060 +vn -0.849945 0.391979 0.352059 +vn -0.849945 0.391980 0.352059 +vn -0.849945 0.391979 0.352059 +vn -0.849944 0.391981 0.352059 +vn -0.352059 0.391980 0.849945 +vn -0.352059 0.391980 0.849945 +vn -0.352059 0.391980 0.849945 +vn -0.352059 0.391980 0.849945 +vn 0.352059 0.391980 0.849945 +vn 0.352059 0.391980 0.849945 +vn 0.352059 0.391980 0.849945 +vn 0.352059 0.391980 0.849945 +vn 0.849945 0.391980 0.352059 +vn 0.849945 0.391980 0.352059 +vn 0.849945 0.391980 0.352059 +vn 0.849945 0.391979 0.352060 +vn 0.849945 0.391979 -0.352059 +vn 0.849945 0.391980 -0.352059 +vn 0.849945 0.391979 -0.352059 +vn 0.849944 0.391981 -0.352059 +vn 0.293568 0.641492 -0.708735 +vn 0.293568 0.641492 -0.708735 +vn 0.293568 0.641492 -0.708735 +vn 0.293568 0.641492 -0.708735 +vn -0.293568 0.641492 -0.708735 +vn -0.293568 0.641493 -0.708735 +vn -0.293568 0.641492 -0.708735 +vn -0.293568 0.641492 -0.708735 +vn -0.708735 0.641492 -0.293568 +vn -0.708735 0.641492 -0.293568 +vn -0.708735 0.641492 -0.293568 +vn -0.708735 0.641493 -0.293568 +vn -0.708735 0.641492 0.293568 +vn -0.708735 0.641492 0.293568 +vn -0.708735 0.641492 0.293568 +vn -0.708735 0.641492 0.293568 +vn -0.293568 0.641492 0.708735 +vn -0.293568 0.641492 0.708735 +vn -0.293568 0.641492 0.708735 +vn -0.293568 0.641492 0.708735 +vn 0.293568 0.641492 0.708735 +vn 0.293568 0.641493 0.708735 +vn 0.293568 0.641492 0.708735 +vn 0.293568 0.641492 0.708735 +vn 0.708735 0.641492 0.293568 +vn 0.708735 0.641492 0.293568 +vn 0.708735 0.641492 0.293568 +vn 0.708735 0.641493 0.293568 +vn 0.708735 0.641492 -0.293568 +vn 0.708735 0.641492 -0.293568 +vn 0.708735 0.641492 -0.293568 +vn 0.708735 0.641492 -0.293568 +vn 0.199124 0.853963 -0.480726 +vn 0.199123 0.853963 -0.480726 +vn 0.199123 0.853963 -0.480726 +vn 0.199122 0.853963 -0.480726 +vn -0.199123 0.853963 -0.480726 +vn -0.199123 0.853963 -0.480726 +vn -0.199123 0.853963 -0.480726 +vn -0.199123 0.853963 -0.480726 +vn -0.480727 0.853962 -0.199124 +vn -0.480727 0.853962 -0.199124 +vn -0.480727 0.853963 -0.199124 +vn -0.480726 0.853963 -0.199122 +vn -0.480726 0.853963 0.199124 +vn -0.480726 0.853962 0.199124 +vn -0.480726 0.853962 0.199124 +vn -0.480727 0.853962 0.199123 +vn -0.199124 0.853963 0.480726 +vn -0.199123 0.853963 0.480726 +vn -0.199123 0.853963 0.480726 +vn -0.199122 0.853963 0.480726 +vn 0.199123 0.853963 0.480726 +vn 0.199123 0.853963 0.480726 +vn 0.199123 0.853963 0.480726 +vn 0.199123 0.853963 0.480726 +vn 0.480727 0.853962 0.199124 +vn 0.480727 0.853962 0.199124 +vn 0.480727 0.853963 0.199124 +vn 0.480726 0.853963 0.199122 +vn 0.480726 0.853963 -0.199124 +vn 0.480726 0.853962 -0.199124 +vn 0.480726 0.853962 -0.199124 +vn 0.480727 0.853962 -0.199123 +vn -0.008999 0.999723 -0.021725 +vn -0.015363 0.999764 -0.015363 +vn -0.015363 0.999764 -0.015363 +vn -0.021726 0.999723 -0.008999 +vn -0.021726 0.999723 0.008999 +vn -0.015363 0.999764 0.015363 +vn -0.015363 0.999764 0.015363 +vn -0.008999 0.999723 0.021725 +vn 0.008999 0.999723 0.021725 +vn 0.015363 0.999764 0.015363 +vn 0.015363 0.999764 0.015363 +vn 0.021726 0.999723 0.008999 +vn 0.021726 0.999723 -0.008999 +vn 0.015363 0.999764 -0.015363 +vn 0.015363 0.999764 -0.015363 +vn 0.008999 0.999723 -0.021725 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 0.000000 -1.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 0.000000 0.000000 1.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 -0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 -1.000000 0.000000 +s 1 +g pSphere1 +usemtl initialShadingGroup +f 1/1/1 2/2/2 9/10/3 +f 9/10/3 2/2/2 10/11/4 +s 2 +f 2/2/5 3/3/6 10/11/7 +f 10/11/7 3/3/6 11/12/8 +s 3 +f 3/3/9 4/4/10 11/12/11 +f 11/12/11 4/4/10 12/13/12 +s 4 +f 4/4/13 5/5/14 12/13/15 +f 12/13/15 5/5/14 13/14/16 +s 5 +f 5/5/17 6/6/18 13/14/19 +f 13/14/19 6/6/18 14/15/20 +s 6 +f 6/6/21 7/7/22 14/15/23 +f 14/15/23 7/7/22 15/16/24 +s 7 +f 7/7/25 8/8/26 15/16/27 +f 15/16/27 8/8/26 16/17/28 +s 8 +f 8/8/29 1/9/30 16/17/31 +f 16/17/31 1/9/30 9/18/32 +s 9 +f 9/10/33 10/11/34 17/19/35 +f 17/19/35 10/11/34 18/20/36 +s 10 +f 10/11/37 11/12/38 18/20/39 +f 18/20/39 11/12/38 19/21/40 +s 11 +f 11/12/41 12/13/42 19/21/43 +f 19/21/43 12/13/42 20/22/44 +s 12 +f 12/13/45 13/14/46 20/22/47 +f 20/22/47 13/14/46 21/23/48 +s 13 +f 13/14/49 14/15/50 21/23/51 +f 21/23/51 14/15/50 22/24/52 +s 14 +f 14/15/53 15/16/54 22/24/55 +f 22/24/55 15/16/54 23/25/56 +s 15 +f 15/16/57 16/17/58 23/25/59 +f 23/25/59 16/17/58 24/26/60 +s 16 +f 16/17/61 9/18/62 24/26/63 +f 24/26/63 9/18/62 17/27/64 +s 17 +f 17/19/65 18/20/66 25/28/67 +f 25/28/67 18/20/66 26/29/68 +s 18 +f 18/20/69 19/21/70 26/29/71 +f 26/29/71 19/21/70 27/30/72 +s 19 +f 19/21/73 20/22/74 27/30/75 +f 27/30/75 20/22/74 28/31/76 +s 20 +f 20/22/77 21/23/78 28/31/79 +f 28/31/79 21/23/78 29/32/80 +s 21 +f 21/23/81 22/24/82 29/32/83 +f 29/32/83 22/24/82 30/33/84 +s 22 +f 22/24/85 23/25/86 30/33/87 +f 30/33/87 23/25/86 31/34/88 +s 23 +f 23/25/89 24/26/90 31/34/91 +f 31/34/91 24/26/90 32/35/92 +s 24 +f 24/26/93 17/27/94 32/35/95 +f 32/35/95 17/27/94 25/36/96 +s 25 +f 25/28/97 26/29/98 33/37/99 +f 33/37/99 26/29/98 34/38/100 +s 26 +f 26/29/101 27/30/102 34/38/103 +f 34/38/103 27/30/102 35/39/104 +s 27 +f 27/30/105 28/31/106 35/39/107 +f 35/39/107 28/31/106 36/40/108 +s 28 +f 28/31/109 29/32/110 36/40/111 +f 36/40/111 29/32/110 37/41/112 +s 29 +f 29/32/113 30/33/114 37/41/115 +f 37/41/115 30/33/114 38/42/116 +s 30 +f 30/33/117 31/34/118 38/42/119 +f 38/42/119 31/34/118 39/43/120 +s 31 +f 31/34/121 32/35/122 39/43/123 +f 39/43/123 32/35/122 40/44/124 +s 32 +f 32/35/125 25/36/126 40/44/127 +f 40/44/127 25/36/126 33/45/128 +s 33 +f 34/38/129 35/39/130 41/46/131 +f 41/46/131 35/39/130 36/40/132 +s 34 +f 36/40/133 37/41/134 41/47/135 +f 41/47/135 37/41/134 38/42/136 +s 35 +f 38/42/137 39/43/138 41/48/139 +f 41/48/139 39/43/138 40/44/140 +s 36 +f 40/44/141 33/37/142 41/49/143 +f 41/49/143 33/37/142 34/38/144 +s 37 +f 43/66/145 42/67/146 45/69/147 +f 45/69/147 42/67/146 44/68/148 +s 38 +f 46/70/149 43/71/150 47/73/151 +f 47/73/151 43/71/150 45/72/152 +s 39 +f 48/74/153 46/75/154 49/77/155 +f 49/77/155 46/75/154 47/76/156 +s 40 +f 50/78/157 48/79/158 51/81/159 +f 51/81/159 48/79/158 49/80/160 +s 41 +f 52/82/161 50/83/162 53/85/163 +f 53/85/163 50/83/162 51/84/164 +s 42 +f 54/86/165 52/87/166 55/89/167 +f 55/89/167 52/87/166 53/88/168 +s 43 +f 56/90/169 54/91/170 57/93/171 +f 57/93/171 54/91/170 55/92/172 +s 44 +f 42/94/173 56/95/174 44/97/175 +f 44/97/175 56/95/174 57/96/176 +s 45 +f 43/66/177 2/50/178 42/67/179 +f 2/50/178 1/51/180 42/67/179 +s 46 +f 43/71/181 46/70/182 2/53/183 +f 3/52/184 2/53/183 46/70/182 +s 47 +f 48/74/185 4/54/186 46/75/187 +f 4/54/186 3/55/188 46/75/187 +s 48 +f 48/79/189 50/78/190 4/57/191 +f 5/56/192 4/57/191 50/78/190 +s 49 +f 52/82/193 6/58/194 50/83/195 +f 6/58/194 5/59/196 50/83/195 +s 50 +f 52/87/197 54/86/198 6/61/199 +f 7/60/200 6/61/199 54/86/198 +s 51 +f 56/90/201 8/62/202 54/91/203 +f 8/62/202 7/63/204 54/91/203 +s 52 +f 56/95/205 42/94/206 8/65/207 +f 1/64/208 8/65/207 42/94/206 +s 53 +f 47/73/209 45/72/210 49/99/211 +f 49/99/211 45/72/210 58/98/212 +s 54 +f 49/99/213 58/98/214 51/84/215 +f 51/84/215 58/98/214 53/85/216 +s 55 +f 45/69/217 44/68/218 58/101/219 +f 58/101/219 44/68/218 57/100/220 +s 56 +f 58/101/221 57/100/222 53/88/223 +f 53/88/223 57/100/222 55/89/224 diff --git a/src/framework.js b/src/framework.js new file mode 100644 index 00000000..9cfcd1b4 --- /dev/null +++ b/src/framework.js @@ -0,0 +1,75 @@ + +const THREE = require('three'); +const OrbitControls = require('three-orbit-controls')(THREE) +import Stats from 'stats-js' +import DAT from 'dat-gui' + +// when the scene is done initializing, the function passed as `callback` will be executed +// then, every frame, the function passed as `update` will be executed +function init(callback, update) { + var stats = new Stats(); + stats.setMode(1); + stats.domElement.style.position = 'absolute'; + stats.domElement.style.left = '0px'; + stats.domElement.style.top = '0px'; + document.body.appendChild(stats.domElement); + + var gui = new DAT.GUI(); + + var framework = { + gui: gui, + stats: stats + }; + + // run this function after the window loads + window.addEventListener('load', function() { + + var scene = new THREE.Scene(); + var camera = new THREE.PerspectiveCamera( 75, window.innerWidth/window.innerHeight, 0.1, 1000 ); + var renderer = new THREE.WebGLRenderer( { antialias: true } ); + renderer.setPixelRatio(window.devicePixelRatio); + renderer.setSize(window.innerWidth, window.innerHeight); + renderer.setClearColor(0x020202, 0); + + var controls = new OrbitControls(camera, renderer.domElement); + controls.enableDamping = true; + controls.enableZoom = true; + controls.target.set(0, 0, 0); + controls.rotateSpeed = 0.3; + controls.zoomSpeed = 1.0; + controls.panSpeed = 2.0; + + document.body.appendChild(renderer.domElement); + + // resize the canvas when the window changes + window.addEventListener('resize', function() { + camera.aspect = window.innerWidth / window.innerHeight; + camera.updateProjectionMatrix(); + renderer.setSize(window.innerWidth, window.innerHeight); + }); + + // assign THREE.js objects to the object we will return + framework.scene = scene; + framework.camera = camera; + framework.renderer = renderer; + + // begin the animation loop + (function tick() { + stats.begin(); + update(framework); // perform any requested updates + renderer.render(scene, camera); // render the scene + stats.end(); + requestAnimationFrame(tick); // register to call this again when the browser renders a new frame + })(); + + // we will pass the scene, gui, renderer, camera, etc... to the callback function + return callback(framework); + }); +} + +export default { + init: init +} + +export const PI = 3.14159265 +export const e = 2.7181718 \ No newline at end of file diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..16c2777d --- /dev/null +++ b/src/main.js @@ -0,0 +1,188 @@ + +const THREE = require('three'); // older modules are imported like this. You shouldn't have to worry about this much +import Framework from './framework' +import GrammarSystem from './shapeGrammar.js' +import {getNoise} from './noise.js' + +// the shape grammar +var city; +var iterations = 0; +var animPlayed = false; + +var lastTime = Date.now(); + +var pic = THREE.ImageUtils.loadTexture('./resources/denethor.jpg'); + +var settings = { + volume: 0.5 +}; + +// curve helpers for terrain deformation +function bias(b, t) { + return Math.pow(t, Math.log(b) / Math.log(0.5)); +} + +function gain(g, t) { + + if(t < 0.5) return bias(t * 2.0, g) / 2.0; + else return bias(t * 2.0 - 1.0,1.0 - g) / 2.0 + 0.5; +} + + +// called after the scene loads +function onLoad(framework) { + var scene = framework.scene; + var camera = framework.camera; + var renderer = framework.renderer; + var gui = framework.gui; + var stats = framework.stats; + + scene.fog = new THREE.Fog(0xffffff, 1, 60); + scene.fog.color.setHSL( 0.55, 0.4, 0.8 ); + + // initialize a simple box and material + var box = new THREE.IcosahedronBufferGeometry(1, 6); + + var mat = new THREE.MeshLambertMaterial(); + var adamCube = new THREE.Mesh(box, mat); + + // set camera position + camera.position.set(3, 5, 15); + camera.lookAt(new THREE.Vector3(0,0,0)); + + // scene.add(adamCube); + city = new GrammarSystem(scene); + city.finalizeGrammar(); + + makeTerrain(scene); + + var audioLoader = new THREE.AudioLoader(); + var listener = new THREE.AudioListener(); + var sound = new THREE.Audio(listener); + camera.add(listener); + + //Load a sound and set it as the Audio object's buffer + audioLoader.load( 'resources/gondor.mp3', function(buffer) { + sound.setBuffer(buffer); + sound.setLoop(true); + sound.setVolume(0.0); + sound.play(); + }); + + + renderer.shadowMapEnabled = true; + renderer.shadowMap.type = THREE.PCFSoftShadowMap; + //renderer.shadowMapSoft = true; + renderer.shadowCameraNear = 1; + renderer.shadowCameraFar = 50; + //renderer.shadowCameraFov = 50; + var directionalLight = new THREE.DirectionalLight( 0xffffff, 0.9 ); + directionalLight.color.setHSL(0.1, 1, 0.95); + directionalLight.position.set(3, 2, 2); + directionalLight.position.multiplyScalar(10); + directionalLight.castShadow = true; + //directionalLight.shadowCameraVisible = true; + directionalLight.shadow.mapSize.width = 2048; + directionalLight.shadow.mapSize.height = 2048; + directionalLight.shadowCameraBottom = -25; + directionalLight.shadowCameraTop = 25; + directionalLight.shadowCameraLeft = -25; + directionalLight.shadowCameraRight = 25; + directionalLight.shadow.camera.near = 0.5; + directionalLight.shadow.camera.far = 50 + + + scene.add(directionalLight); + + + var helper = new THREE.CameraHelper( directionalLight.shadow.camera ); + //scene.add( helper ); + var hLight = new THREE.HemisphereLight(0xeef5ff, 0x010120, 0.2); + scene.add(hLight); + + // edit params and listen to changes like this + // more information here: https://workshop.chromeexperiments.com/examples/gui/#1--Basic-Usage + gui.add(camera, 'fov', 0, 180).onChange(function(newVal) { + camera.updateProjectionMatrix(); + }); + + var obj = { Iterate:function(){ city.iterateGrammar(); iterations++;}, + Clear:function(){ city.clearIterations(); iterations = 0; animPlayed = false;} }; + + gui.add(obj,'Iterate'); + gui.add(obj,'Clear'); + gui.add(settings, 'volume', 0.0, 1.0).onChange(function(newVal) { + sound.setVolume(newVal); + }); +} + +function makeTerrain(scene) { + var planeGeo = new THREE.PlaneGeometry(30, 30, 40, 40); + var planeMat = new THREE.MeshPhongMaterial( { + side: THREE.DoubleSide, + color: 0xaaaaaa + }); + planeGeo.applyMatrix( new THREE.Matrix4().makeRotationX(-Math.PI / 2.0)); + + var verts = planeGeo.vertices; + for (var i = 0; i < verts.length; i++) { + var u = (verts[i].x - 15.0) / -30.0; + var v = (verts[i].z - 15.0) / -30.0; + var bv2 = bias(0.4, v); + var bv = bias(0.20 + 0.05 * getNoise(u, v, 6.0), gain(0.25 + 0.15 * getNoise(u, v, 6.0), v)); + verts[i].y += bv2 * getNoise(u, v, 16.0) + bv2 * 2 * getNoise(u, v, 8.0) - 0.4 + 15.0 * bv + 0.4; + verts[i].z += 0.2 * getNoise(u, gain(0.40, v), 16.0); + + } + + planeGeo.verticesNeedUpdate = true; + planeGeo.computeFaceNormals(); + planeGeo.computeVertexNormals(); + planeGeo.normalsNeedUpdate = true; + + var plane = new THREE.Mesh(planeGeo, planeMat); + plane.castShadow = true; + plane.receiveShadow = true; + scene.add(plane); +} + +// called on frame updates +function onUpdate(framework) { + var denethor = framework.scene.getObjectByName("unfortunateSteward"); + var t = Date.now(); + var dt = (t - lastTime) / 1000.0; + lastTime = t; + if (denethor !== undefined) { + // run denethor off the cliff + var vel = denethor.userdata.v; + denethor.position.x = dt * vel.x + denethor.position.x; + denethor.position.y = dt * vel.y + denethor.position.y; + denethor.position.z = dt * vel.z + denethor.position.z; + if (denethor.position.z > 8.1) { + denethor.userdata.v.y -= 1.1 * dt; + } + + if (denethor.position.y <= 0) { + framework.scene.remove(denethor); + console.log("plonk"); + } + } else if (iterations >= 4 && !animPlayed) { + // make a burning denethor + var geo = new THREE.BoxGeometry(0.4, 0.4, 0.4); + geo.applyMatrix(new THREE.Matrix4().makeTranslation(0, 0.1, 0)); + var mat = new THREE.MeshBasicMaterial({map: pic}); + denethor = new THREE.Mesh(geo, mat); + denethor.name = "unfortunateSteward"; + denethor.userdata = {v: new THREE.Vector3(0, 0, 1)}; + denethor.position.y = 9.0; + denethor.position.z = 1.0; + //denethor.material.color.setHex(0xff8800); + denethor.castShadow = true; + framework.scene.add(denethor); + console.log("AAAAAAAAAaaaaaaaaaa~...."); + animPlayed = true; + } +} + +// when the scene is done initializing, it will call onLoad, then on frame updates, call onUpdate +Framework.init(onLoad, onUpdate); \ No newline at end of file diff --git a/src/noise.js b/src/noise.js new file mode 100644 index 00000000..0927ec11 --- /dev/null +++ b/src/noise.js @@ -0,0 +1,60 @@ +const THREE = require('three'); +// gradients for improved perlin noise +var gradients = [new THREE.Vector2(1.0, 0), new THREE.Vector2(-1.0, 0), + new THREE.Vector2(0, 1.0), new THREE.Vector2(0, -1.0), + new THREE.Vector2(0.7071, 0.7071), new THREE.Vector2(-0.7071, 0.7071), + new THREE.Vector2(0.7071, -0.7071), new THREE.Vector2(-0.7071, -0.7071)]; + +// hash table for improved perlin noise +var pHash = [151,160,137,91,90,15, + 131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23, + 190, 6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33, + 88,237,149,56,87,174,20,125,136,171,168, 68,175,74,165,71,134,139,48,27,166, + 77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244, + 102,143,54, 65,25,63,161, 1,216,80,73,209,76,132,187,208, 89,18,169,200,196, + 135,130,116,188,159,86,164,100,109,198,173,186, 3,64,52,217,226,250,124,123, + 5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42, + 223,183,170,213,119,248,152, 2,44,154,163, 70,221,153,101,155,167, 43,172,9, + 129,22,39,253, 19,98,108,110,79,113,224,232,178,185, 112,104,218,246,97,228, + 251,34,242,193,238,210,144,12,191,179,162,241, 81,51,145,235,249,14,239,107, + 49,192,214, 31,181,199,106,157,184, 84,204,176,115,121,50,45,127, 4,150,254, + 138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180]; + + +function lerp(a, b, t) { + return (t * b + (1.0 - t) * a); +} + +//2D perlin noise +export function getNoise(u, v, samples) { + var xs = u * samples; + var ys = v * samples; + + var xlb = Math.floor(xs); + var ylb = Math.floor(ys); + + var i = pHash[pHash[xlb + pHash[ylb]]] / 256.0; + var g = gradients[Math.floor(i * 8.0)]; + var p = new THREE.Vector2(xs - xlb, ys - ylb); + var dll = g.dot(p); + + i = pHash[pHash[xlb + 1 + pHash[ylb]]] / 256.0; + g = gradients[Math.floor(i * 8.0)]; + p = new THREE.Vector2(xs - xlb - 1.0, ys - ylb); + var dlr = g.dot(p); + + i = pHash[pHash[xlb + pHash[ylb + 1]]] / 256.0; + g = gradients[Math.floor(i * 8.0)]; + p = new THREE.Vector2(xs - xlb, ys - ylb - 1.0); + var dul = g.dot(p); + + + i = pHash[pHash[xlb + 1 + pHash[ylb + 1]]] / 256.0; + g = gradients[Math.floor(i * 8.0)]; + p = new THREE.Vector2(xs - xlb - 1.0, ys - ylb - 1.0); + //console.log(g); + var dur = g.dot(p); + + + return lerp(lerp(dll, dlr, xs - xlb), lerp(dul, dur, xs - xlb), ys - ylb); +} \ No newline at end of file diff --git a/src/shapeGrammar.js b/src/shapeGrammar.js new file mode 100644 index 00000000..3853c472 --- /dev/null +++ b/src/shapeGrammar.js @@ -0,0 +1,469 @@ +const THREE = require('three') +const OBJLoader = require('three-obj-loader')(THREE) +import {getNoise} from './noise.js' + +var ShapeEnum = Object.freeze({Ring: 0, Wall: 1, Roof1: 2, + Roof2: 3, Block: 4, Tower: 5, + Wedge: 6, Emplacement: 7, Cyl: 8, + Other: 999}); +var material = new THREE.MeshPhongMaterial({ + side: THREE.DoubleSide, + color: 0xfefaf0 + }); +var objLoader = new THREE.OBJLoader(); +var objLibrary = []; + +// used to scale or cull building placements +function populationDensity(x, z) { + var u = (x - 10.0) / -20.0; + var v = (z - 10.0) / -20.0; + return getNoise(u, v, 8.0); +} + +/* +State of a single shape in the grammar. +pos: postion +scale: scale +yaw: rotation about world Y axis +symbol: the type of shape that this will be +*/ +var Shape = function(pos, scale, yaw, symbol, terminal, iter) { + return { + pos: new THREE.Vector3(pos.x, pos.y, pos.z), + scale: new THREE.Vector3(scale.x, scale.y, scale.z), + yaw: yaw, + type: symbol, + terminal: terminal, + iter: iter + } +} + +/* +The exported GrammarSystem class. + - The grammar system has a list of shapes that are data the grammar can iterate on + - As an optimization, there is only a single merged mesh + - Also responsible for adding to scene and removing self from scene +*/ +export default class GrammarSystem { + + // adds dummies to the list of objs, then reloads when obj is ready + // usually takes only a few ms + loadAllObjs(selfRef) { + var mContainer1 = new THREE.Geometry(); + + objLibrary.push(mContainer1); + objLoader.load('./resources/ring.obj', function(obj) { + var g = new THREE.Geometry().fromBufferGeometry(obj.children[0].geometry); + g.applyMatrix( new THREE.Matrix4().makeScale(8, 8, 8)); + g.applyMatrix( new THREE.Matrix4().makeTranslation(0, 2, 0)); + + objLibrary[0].merge(g, objLibrary[0].matrix); + + selfRef.clearIterations(); + }); + + var dummy2 = new THREE.Geometry(); + objLibrary.push(dummy2); + objLoader.load('./resources/emplacement.obj', function(obj) { + var g = new THREE.Geometry().fromBufferGeometry(obj.children[0].geometry); + g.applyMatrix( new THREE.Matrix4().makeRotationY(0.5 * Math.PI / 180.0)); + + objLibrary[1].merge(g, g.matrix); + + selfRef.clearIterations(); + }); + + + var dummy3 = new THREE.Geometry(); + objLibrary.push(dummy3); + objLoader.load('./resources/roundroof.obj', function(obj) { + var g = new THREE.Geometry().fromBufferGeometry(obj.children[0].geometry); + + objLibrary[2].merge(g, g.matrix); + + selfRef.clearIterations(); + }); + + var dummy4 = new THREE.Geometry(); + objLibrary.push(dummy4); + objLoader.load('./resources/angleroof.obj', function(obj) { + var g = new THREE.Geometry().fromBufferGeometry(obj.children[0].geometry); + g.applyMatrix( new THREE.Matrix4().makeScale(4, 4, 4)); + objLibrary[3].merge(g, g.matrix); + + selfRef.clearIterations(); + }); + + } + + constructor(scene) { + + this.scene = scene; + this.allShapes = []; // will contain every single + this.geometry = new THREE.Geometry(); + this.mesh = undefined; + this.numIterations = 1; + this.loadAllObjs(this); + + this.addShape(new THREE.Vector3(0, 0, 0), + new THREE.Vector3(1, 1, 1), 0.0, ShapeEnum.Ring, false, 1); + this.addShape(new THREE.Vector3(0, 0, 15), + new THREE.Vector3(2, 2, 2), 35.0, ShapeEnum.Block, false, 1); + } + + + + // add a single shape to the grammar with specified values + addShape(pos, scale, yaw, type, terminal, iter) { + + var s = new Shape(pos, scale, yaw, type, terminal, iter); + this.allShapes.push(s); + // merge into existing geometry + var geom; + switch(type) { + case ShapeEnum.Ring: + var ring = objLibrary[0].clone(); + geom = new THREE.CylinderGeometry(8, 8, 2, 20); + geom.applyMatrix( new THREE.Matrix4().makeTranslation(0, 1, 0)); + geom.merge(ring, ring.matrix); + break; + + case ShapeEnum.Block: + geom = new THREE.BoxGeometry(4, 4, 4); + geom.applyMatrix( new THREE.Matrix4().makeTranslation(0, 2, 0)); + break; + + case ShapeEnum.Wall: + geom = objLibrary[0].clone(); + break; + + case ShapeEnum.Wedge: + geom = new THREE.CylinderGeometry(2, 2.4, 2, 3); + geom.applyMatrix( new THREE.Matrix4().makeTranslation(0, 1, 0)); + geom.applyMatrix( new THREE.Matrix4().makeScale(1, 1, 4)); + geom.computeFlatVertexNormals(); + geom.normalsNeedUpdate = true; + break; + + case ShapeEnum.Tower: + var g1 = new THREE.BoxGeometry(0.6, 2, 0.6); + g1.applyMatrix(new THREE.Matrix4().makeTranslation(0, 2, 0)); + geom = new THREE.BoxGeometry(0.5, 2, 0.5); + geom.applyMatrix(new THREE.Matrix4().makeTranslation(0, 4, 0)); + geom.merge(g1, g1.matrix); + break; + + case ShapeEnum.Emplacement: + geom = objLibrary[1].clone(); + break; + + case ShapeEnum.Roof1: + geom = objLibrary[2].clone(); + break; + + case ShapeEnum.Roof2: + geom = objLibrary[3].clone(); + break; + + case ShapeEnum.Cyl: + geom = new THREE.CylinderGeometry(8, 8, 2, 20); + geom.applyMatrix( new THREE.Matrix4().makeTranslation(0, 1, 0)); + break; + + default: + geom = new THREE.CylinderGeometry(8, 8, 2, 20); + geom.applyMatrix( new THREE.Matrix4().makeTranslation(0, 1, 0)); + break; + + } + + geom.applyMatrix( new THREE.Matrix4().makeScale(scale.x, scale.y, scale.z)); + geom.applyMatrix( new THREE.Matrix4().makeRotationY(yaw * Math.PI / 180.0)); + geom.applyMatrix( new THREE.Matrix4().makeTranslation(pos.x, pos.y, pos.z)); + this.geometry.merge(geom, geom.matrix); + } + + // add a single already-created shape + addWholeShape(shape) { + this.addShape(shape.pos, shape.scale, shape.yaw, shape.type, shape.terminal, shape.iter); + } + + // completely removes all geometry and information + resetGrammar() { + var g = this.scene.getObjectByName("grammarGeo"); + if (g !== undefined) { + this.scene.remove(g); + this.mesh = undefined; + } + this.allShapes = []; + this.geometry = new THREE.Geometry(); + this.numIterations = 1; + //this.addShape(new THREE.Vector3(0, 0, 0), new THREE.Vector3(1, 1, 1), 0.0, ShapeEnum.Ring, false); + } + + // resets the shape grammar to its initial state + clearIterations() { + this.resetGrammar(); + this.addShape(new THREE.Vector3(0, 0, 0), + new THREE.Vector3(1, 1, 1), 0.0, ShapeEnum.Ring, false, 1); + var outerWall = new Shape(new THREE.Vector3(0, -2, 0), new THREE.Vector3(1.2, 1, 1.2), + 0, ShapeEnum.Wall, false, 1); + this.addWholeShape(outerWall); + this.finalizeGrammar(); + } + + + // caps this shape with a roof and terminates it + buildRoof(shape, shapeList) { + var longestSide = Math.max(shape.scale.x, shape.scale.z); + var roof; + if (shape.scale.x > shape.scale.z) { + roof = new Shape(new THREE.Vector3(shape.pos.x, 4 * shape.scale.y +shape.pos.y, shape.pos.z), + new THREE.Vector3(shape.scale.z, shape.scale.x, shape.scale.x), + shape.yaw + 90, ShapeEnum.Roof2, true, shape.iter + 1); + + } else { + roof = new Shape(new THREE.Vector3(shape.pos.x, 4 * shape.scale.y +shape.pos.y, shape.pos.z), + new THREE.Vector3(shape.scale.x, shape.scale.z, shape.scale.z), + shape.yaw, ShapeEnum.Roof2, true, shape.iter + 1); + } + + + //console.log("snorf"); + shapeList.push(roof); + } + + // creates a tower on this building + + // divides this shape and adds the new ones to the list + subdivide(shape, shapeList) { + var xS = Math.cos(shape.yaw * Math.PI / 180.0); + var zS = Math.sin(shape.yaw * Math.PI / 180.0); + + if (Math.random() < 0.1 || shape.scale.x < 0.1 || shape.scale.z < 0.1) { + shape.terminal = true; + shapeList.push(shape); + this.buildRoof(shape, shapeList); + return; + } + + + var s1; var s2; + var d; var s; + if (Math.random() > 0.5) { + d = new THREE.Vector2(0, shape.scale.z); + d.rotateAround(new THREE.Vector2(0, 0), shape.yaw * Math.PI / 180.0); + s = new THREE.Vector3(shape.scale.x, shape.scale.y, 0.45 * shape.scale.z); + } else { + d = new THREE.Vector2(shape.scale.x, 0); + d.rotateAround(new THREE.Vector2(0, 0), shape.yaw * Math.PI / 180.0); + s = new THREE.Vector3(0.4 * shape.scale.x, shape.scale.y, shape.scale.z); + } + + s1 = new Shape(new THREE.Vector3(shape.pos.x + d.x, + shape.pos.y, shape.pos.z - d.y), s.multiply(new THREE.Vector3(1, 1.0 - Math.random() * 0.2, 1)), + shape.yaw, ShapeEnum.Block, false, shape.iter + 1); + s2 = new Shape(new THREE.Vector3(shape.pos.x - d.x, + shape.pos.y, shape.pos.z + d.y), s.multiply(new THREE.Vector3(1, 1.0 - Math.random() * 0.2, 1)), + shape.yaw, ShapeEnum.Block, false, shape.iter + 1); + + shapeList.push(s1); + shapeList.push(s2); + } + + + // creates another layer of the city + buildLayer(shape, shapeList) { + var x = (8.0 - 1.5 * shape.iter) / 8.0; + var y = (8.0 - 0.5 * shape.iter) / 8.0; + var s = new THREE.Vector3(x, y, x) + var check = this.numIterations > 3; + + var layer = new Shape(new THREE.Vector3(shape.pos.x, shape.pos.y + 2 * shape.scale.y, shape.pos.z), + s, + shape.yaw, check? ShapeEnum.Cyl : ShapeEnum.Ring, false, shape.iter + 1); + + + var cliff = new Shape(new THREE.Vector3(0, 0, 0), + new THREE.Vector3(1, y * (shape.iter + 2), 1), + 0, ShapeEnum.Wedge, true, 1); + + + shape.terminal = true; // end iteration on original + shapeList.push(shape); // preserve original + shapeList.push(cliff); + shapeList.push(layer); + } + + + // places houses in a reasonable way along the ring + placeRadial(shape, shapeList) { + var inner = (8.0 - 1.5 * (shape.iter - 1.0)); + var outer = (8.0 - 1.5 * (shape.iter - 2.0)); + var rCenter = 0.5 * (inner + outer) - 0.05; + var arc = 2 * Math.PI * rCenter * + console.log(rCenter); + var rScale = 0.5 * 0.25 * (outer - inner); + var topLayer = shape.type == ShapeEnum.Cyl; + var rowOffset = (Math.random() - 0.5) * 5.0 + 4.5; + for (var i = 0; i < 20; i++) { + var offset = (Math.random() - 0.5) * 2.0; + var theta = i * 360.0 / 40 + offset + rowOffset + (topLayer? 0 : offset); + theta = topLayer ? theta * 2 : theta; + if (Math.abs(theta - 90) < 10) continue; // avoid the wedge + var rct = rCenter * Math.cos(theta * Math.PI / 180.0); + var rst = rCenter * Math.sin(theta * Math.PI / 180.0); + //console.log(theta); + + var pop = populationDensity(rct, rst); + if (pop < -0.2) continue; // not populous enough for a building + + var s = new Shape(new THREE.Vector3(rct, shape.pos.y, rst), + new THREE.Vector3(1.4 * rScale, + (topLayer ? 2.0 : 1.0) * 0.3 * inner * (1 + pop) * (rScale), + (topLayer ? 2.0 : 1.0) *shape.scale.z * 1.5 * rScale), + -theta, ShapeEnum.Block, + false, shape.iter + 1); + shapeList.push(s); + } + + if (shape.type == ShapeEnum.Cyl) { + shape.terminal = true; + shapeList.push(shape); + } + } + + // places a building atop an existing emplacement + buildEmplacement(shape, shapeList) { + var pop = 1.0 + populationDensity(shape.pos.x, shape.pos.z); + + var s = new Shape(new THREE.Vector3(shape.pos.x, shape.pos.y, shape.pos.z), + new THREE.Vector3(shape.scale.x * 0.25, pop * shape.scale.y * 0.25, shape.scale.z * 0.5 * 0.25), + shape.yaw, ShapeEnum.Block, false, shape.iter + 1); + shapeList.push(s); + shape.terminal = true; + shapeList.push(shape); + } + + // creates a tower on the wall + buildWallTower(shape, shapeList) { + var rad = 8 * shape.scale.z; + var numTowers = Math.floor(Math.random() * 5.0); + var offset = Math.random() * 180.0 / numTowers; + + // wall emplacements + for (var i = 0; i < 10; i++) { + if (Math.random() < 0.6) continue; + var theta = i * 18.0 + 9.0; + if (Math.abs(theta - 90) < 10) continue; // avoid the wedge + var ct = Math.cos(theta * Math.PI / 180.0) + var st = Math.sin(theta * Math.PI / 180.0) + + var rct = rad * ct; + var rst = rad * st; + + var s = new Shape(new THREE.Vector3(rct, shape.pos.y + 4 * shape.scale.y, rst), + new THREE.Vector3(shape.scale.x, shape.scale.y + (Math.random() - 0.5) * 0.2, shape.scale.z), + 90-theta, ShapeEnum.Emplacement, false, shape.iter + 1); + shapeList.push(s); + } + + // wall towers + for (var i = 0; i <= 10; i++) { + if (Math.random() < 0.7) continue; + var theta = i * 18.0; + if (Math.abs(theta - 90) < 10) continue; // avoid the wedge + var ct = Math.cos(theta * Math.PI / 180.0) + var st = Math.sin(theta * Math.PI / 180.0) + + var rct = rad * ct; + var rst = rad * st; + + var o = 1 + (Math.random() - 0.5) * 0.3; + + var s = new Shape(new THREE.Vector3(rct, shape.pos.y, rst), + new THREE.Vector3(shape.scale.x, o * shape.scale.y, shape.scale.z), + -theta, ShapeEnum.Tower, true, shape.iter + 1); + shapeList.push(s); + + var r = new Shape(new THREE.Vector3(rct, shape.pos.y + 5 * o * shape.scale.y, rst), + new THREE.Vector3(0.7 * shape.scale.x, 0.7 * shape.scale.x, 0.7 * shape.scale.z), + -theta, ShapeEnum.Roof1, true, shape.iter + 1); + shapeList.push(r); + } + + if (shape.type == ShapeEnum.Wall) { + shape.terminal = true; + shapeList.push(shape); + } + + } + + // apply a rule to each non - terminal shape in the grammar + iterateGrammar() { + // begin a new list of shapes + var newShapes = []; + var newIter = this.numIterations + 1; + + // for each shape, apply an appropriate rule + for (var i = 0; i < this.allShapes.length; i++) { + if (!this.allShapes[i].terminal) { + switch(this.allShapes[i].type) { + case ShapeEnum.Ring: + this.buildLayer(this.allShapes[i], newShapes); + this.placeRadial(this.allShapes[i], newShapes); + this.buildWallTower(this.allShapes[i], newShapes); + break; + case ShapeEnum.Block: + this.subdivide(this.allShapes[i], newShapes); + break; + case ShapeEnum.Wall: + this.buildWallTower(this.allShapes[i], newShapes); + break; + case ShapeEnum.Cyl: + this.placeRadial(this.allShapes[i], newShapes); + break; + case ShapeEnum.Emplacement: + this.buildEmplacement(this.allShapes[i], newShapes); + break; + default: + newShapes.push(this.allShapes[i]); + break; + } + } else { + // this shape is terminal. Simply add it to the list + if (this.allShapes[i].type == ShapeEnum.Block) { + //this.buildRoof(this.allShapes[i], newShapes); + } + newShapes.push(this.allShapes[i]); + } + + } + + // clear out the old information and geometry + this.resetGrammar(); + + // add every shape from the iteration + for (var i = 0; i < newShapes.length; i++) { + this.addWholeShape(newShapes[i]); + } + + + + // render the new shape grammar + this.numIterations = newIter; + this.finalizeGrammar(); + } + + // takes the merged geometry and applies it to the scene + finalizeGrammar() { + if (this.mesh == undefined) { + this.mesh = new THREE.Mesh(this.geometry, material); + this.mesh.name = "grammarGeo"; + this.mesh.castShadow = true; + this.mesh.receiveShadow = true; + this.scene.add(this.mesh); + } + } + +} \ No newline at end of file diff --git a/webpack.config.js b/webpack.config.js new file mode 100644 index 00000000..57dce485 --- /dev/null +++ b/webpack.config.js @@ -0,0 +1,28 @@ +const path = require('path'); + +module.exports = { + entry: path.join(__dirname, "src/main"), + output: { + filename: "./bundle.js" + }, + module: { + loaders: [ + { + test: /\.js$/, + exclude: /(node_modules|bower_components)/, + loader: 'babel', + query: { + presets: ['es2015'] + } + }, + { + test: /\.glsl$/, + loader: "webpack-glsl" + }, + ] + }, + devtool: 'source-map', + devServer: { + port: 7000 + } +} \ No newline at end of file