trying to make depth texture work

This commit is contained in:
minish 2024-09-27 22:41:08 -04:00
parent eee4bbfc15
commit bb6e975f48
Signed by: min
GPG Key ID: FEECFF24EF0CE9E9
12 changed files with 86767 additions and 99 deletions

View File

@ -24,7 +24,8 @@
<body> <body>
<!-- <canvas width="320" height="180"></canvas> --> <!-- <canvas width="320" height="180"></canvas> -->
<canvas width="640" height="360"></canvas> <!-- <canvas width="640" height="360"></canvas> -->
<canvas width="1024" height="1024"></canvas>
<!-- <canvas width="1920" height="1080"></canvas> --> <!-- <canvas width="1920" height="1080"></canvas> -->
</body> </body>

View File

@ -2,6 +2,12 @@
const canvas = document.getElementsByTagName("canvas")[0]; const canvas = document.getElementsByTagName("canvas")[0];
const gl = canvas.getContext("webgl", { antialias: false, preserveDrawingBuffer: false }); const gl = canvas.getContext("webgl", { antialias: false, preserveDrawingBuffer: false });
/* Utility */
const fetchText = async url => (await fetch(url)).text();
/* Viewport, etc. */
/* The actual canvas is statically sized in HTML, and from there scaled with CSS */
/* So, this does not need to be updated ever */
var projectionMatrix = mat4.create(); var projectionMatrix = mat4.create();
mat4.perspective( mat4.perspective(
projectionMatrix, projectionMatrix,
@ -9,68 +15,81 @@ mat4.perspective(
gl.drawingBufferWidth / gl.drawingBufferHeight, gl.drawingBufferWidth / gl.drawingBufferHeight,
0.1, 100.0 0.1, 100.0
); );
gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight); gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
/* Load shaders */
const fetchText = async url => (await fetch(url)).text();
const vsSrc = await fetchText("/shader/my.vert");
const fsSrc = await fetchText("/shader/my.frag");
const program = compile(gl, vsSrc, fsSrc);
gl.useProgram(program);
/* WebGL set-up */ /* WebGL set-up */
gl.clearColor(.1137, .1254, .1294, 1.0); // gl.clearColor(.1137, .1254, .1294, 1.0);
gl.clearColor(0.0, 0.0, 0.0, 1.0);
gl.enable(gl.DEPTH_TEST); gl.enable(gl.DEPTH_TEST);
gl.enable(gl.CULL_FACE);
// /* Geometry */ // If this gets gc'd the extension stops working supposedly
// var verts = new Float32Array([ const ext_depthTexture = gl.getExtension('WEBGL_depth_texture');
// 1.0, 1.0, 1.0, if (!ext_depthTexture) {
// -1.0, 1.0, 1.0, console.log("no depth texture support!");
// -1.0, -1.0, 1.0, }
// 1.0, -1.0, 1.0,
// 1.0, -1.0, -1.0,
// 1.0, 1.0, -1.0,
// -1.0, 1.0, -1.0,
// -1.0, -1.0, -1.0,
// ]);
// // Indices of the vertices for each triangle /* Load model */
// var indices = new Uint8Array([ const [vertsOut, vertsCount] = parseObj(await fetchText("/model/untitled.obj"));
// 0, 1, 2, 0, 2, 3, // front
// 0, 3, 4, 0, 4, 5, // right
// 0, 5, 6, 0, 6, 1, // up
// 1, 6, 7, 1, 7, 2, // left
// 7, 4, 3, 7, 3, 2, // down
// 4, 7, 6, 4, 6, 5 // back
// ]);
const mdlSrc = await fetchText("/model/Shinji.obj");
const [verts, normals, indices] = parseObj(mdlSrc);
console.log(verts, normals, indices)
const modelViewMatrix = mat4.create(); const modelViewMatrix = mat4.create();
mat4.translate( mat4.translate(
modelViewMatrix, modelViewMatrix,
modelViewMatrix, modelViewMatrix,
[0.0, 0.0, -5.0] [0.0, -0.6, -4.0]
); );
/* Get attribs/uniforms */ /* Create vertex buffer */
var a_position = gl.getAttribLocation(program, 'a_position'); const vertexBuffer = gl.createBuffer();
var u_projectionMtx = gl.getUniformLocation(program, 'u_projectionMtx'); gl.bindBuffer(gl.ARRAY_BUFFER, vertexBuffer);
var u_modelViewMtx = gl.getUniformLocation(program, 'u_modelViewMtx'); gl.bufferData(gl.ARRAY_BUFFER, vertsOut, gl.STATIC_DRAW);
var u_clock = gl.getUniformLocation(program, 'u_clock');
/* Create buffers */ /* Shader programs */
buffer(gl, verts, program, 'a_position', 3, gl.FLOAT); const FSIZE = vertsOut.BYTES_PER_ELEMENT;
buffer(gl, normals, program, 'a_normal', 3, gl.FLOAT); class ShaderProgram {
constructor(vsSrc, fsSrc, skipNormals = false) {
this.pgm = compile(gl, vsSrc, fsSrc);
/* Indices */ /* get attributes that we need for rendering */
gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER, gl.createBuffer()); this.a_position = gl.getAttribLocation(this.pgm, "a_position");
gl.bufferData(gl.ELEMENT_ARRAY_BUFFER, indices, gl.STATIC_DRAW); this.a_normal = gl.getAttribLocation(this.pgm, "a_normal");
this.u_projectionMtx = gl.getUniformLocation(this.pgm, "u_projectionMtx");
this.u_modelViewMtx = gl.getUniformLocation(this.pgm, "u_modelViewMtx");
/* vertex attributes */
gl.vertexAttribPointer(this.a_position, 3, gl.FLOAT, false, FSIZE * 6, 0);
gl.enableVertexAttribArray(this.a_position);
if (!skipNormals) {
gl.vertexAttribPointer(this.a_normal, 3, gl.FLOAT, false, FSIZE * 6, FSIZE * 3);
gl.enableVertexAttribArray(this.a_normal);
}
/* set our projection matrix, because it doesn't change */
gl.uniformMatrix4fv(this.u_projectionMtx, false, projectionMatrix);
}
use() {
gl.useProgram(this.pgm);
}
preRender(mvMtx) {
gl.uniformMatrix4fv(this.u_modelViewMtx, false, mvMtx);
}
}
const spVis = new ShaderProgram(
await fetchText("/shader/my.vert"),
await fetchText("/shader/my.frag")
);
const spVis_u_clock = gl.getUniformLocation(spVis.pgm, "u_clock");
const spVis_u_depthSampler = gl.getUniformLocation(spVis.pgm, "u_depthSampler");
const spDepth = new ShaderProgram(
await fetchText("/shader/depth.vert"),
await fetchText("/shader/depth.frag"),
true
);
/* Utility function */ /* Utility function */
const rotate3D = (mtx, x, y, z) => { const rotate3D = (mtx, x, y, z) => {
@ -91,31 +110,101 @@ const rotate3D = (mtx, x, y, z) => {
); );
}; };
rotate3D(modelViewMatrix, 0.4, 0, 0); rotate3D(modelViewMatrix, 0.0, 0.0, 0.0);
/* Set up depth texture... */
// Color texture
const colorTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, colorTexture);
// gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(
gl.TEXTURE_2D, 0, gl.RGBA,
gl.drawingBufferWidth, gl.drawingBufferHeight,
0, gl.RGBA, gl.UNSIGNED_BYTE, null
);
// Depth texture
const depthTexture = gl.createTexture();
gl.bindTexture(gl.TEXTURE_2D, depthTexture);
// gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
gl.texImage2D(
gl.TEXTURE_2D, 0, gl.DEPTH_COMPONENT,
gl.drawingBufferWidth, gl.drawingBufferHeight,
0, gl.DEPTH_COMPONENT, gl.UNSIGNED_SHORT, null
);
// Framebuffer to render the texture with
const frameBuffer = gl.createFramebuffer();
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.COLOR_ATTACHMENT0, gl.TEXTURE_2D, colorTexture, 0);
gl.framebufferTexture2D(gl.FRAMEBUFFER, gl.DEPTH_ATTACHMENT, gl.TEXTURE_2D, depthTexture, 0);
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
/* Set uniforms we don't update */
spVis.use();
gl.activeTexture(gl.TEXTURE0);
gl.bindTexture(gl.TEXTURE_2D, depthTexture);
gl.uniform1i(spVis_u_depthSampler, 0);
const draw_update = () => {
// Rotate camera
var delta = performance.now() - lastDraw + 0.001;
lastDraw = performance.now();
var r1 = 1 / delta;
r1 = (r1 * Math.PI) / 180;
// rotate3D(modelViewMatrix, 0, r1, 0);
};
const draw_depthPass = () => {
// Bind to framebuffer for depth texture
gl.bindFramebuffer(gl.FRAMEBUFFER, frameBuffer);
gl.colorMask(false, false, false, false);
// Do I even need to do this?
gl.clear(gl.DEPTH_BUFFER_BIT);
// Draw geometry
gl.drawArrays(gl.TRIANGLES, 0, vertsCount);
};
const draw_visualPass = () => {
// Bind back
gl.bindFramebuffer(gl.FRAMEBUFFER, null);
gl.colorMask(true, true, true, true);
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT);
// Draw everything
gl.drawArrays(gl.TRIANGLES, 0, vertsCount);
};
/* Render */ /* Render */
var lastDraw = performance.now(); var lastDraw = performance.now();
const draw = () => { const draw = () => {
requestAnimationFrame(draw); requestAnimationFrame(draw);
// Rotate camera // Perform any updates to the scene
var delta = performance.now() - lastDraw + 0.001; draw_update();
lastDraw = performance.now();
var r1 = 1 / delta; // Pre-render setup (depth)
var r2 = r1 * 2; spDepth.use();
r1 = (r1 * Math.PI) / 180; spDepth.preRender(modelViewMatrix);
r2 = (r2 * Math.PI) / 180;
rotate3D(modelViewMatrix, 0, r1, 0);
// Set uniforms // Do depth pass
gl.uniformMatrix4fv(u_projectionMtx, false, projectionMatrix); draw_depthPass();
gl.uniformMatrix4fv(u_modelViewMtx, false, modelViewMatrix);
gl.uniform1f(u_clock, performance.now() % 4096);
// Draw triangles // Pre-render setup (visual)
gl.clear(gl.COLOR_BUFFER_BIT | gl.DEPTH_BUFFER_BIT); spVis.use();
gl.drawElements(gl.TRIANGLES, indices.length, gl.UNSIGNED_SHORT, 0); spVis.preRender(modelViewMatrix);
gl.uniform1f(spVis_u_clock, performance.now() % 4000);
// Do the real visual pass
draw_visualPass();
} }
/* Start */ /* Start */

View File

@ -1,19 +1,22 @@
function parseObj(docStr) { function parseObj(docStr) {
const positions = []; const bufPositions = [];
const normals = []; const bufNormals = [];
const indices = [];
const out = [];
var vertCount = 0;
const ops = { const ops = {
v(str) { v(str) {
var xyz = str.match(/[0-9.-]+/g).map(Number); var xyz = str.match(/[0-9.-]+/g).map(Number);
positions.push(xyz); bufPositions.push(xyz);
}, },
vn(str) { vn(str) {
var xyz = str.match(/[0-9.-]+/g).map(Number); var xyz = str.match(/[0-9.-]+/g).map(Number);
normals.push(xyz); bufNormals.push(xyz);
}, },
f(str) { f(str) {
const ind = []; const pts = [];
for (var faceStr of str.split(" ")) { for (var faceStr of str.split(" ")) {
var [iV, iVt, iVn] = faceStr.split("/").map(Number); var [iV, iVt, iVn] = faceStr.split("/").map(Number);
@ -21,7 +24,7 @@ function parseObj(docStr) {
/* obj uses 1-based indices */ /* obj uses 1-based indices */
iV--; iVt--; iVn--; iV--; iVt--; iVn--;
ind.push({ pts.push({
iV: iV, iV: iV,
// iVt: iVt, // iVt: iVt,
iVn: iVn, iVn: iVn,
@ -29,12 +32,16 @@ function parseObj(docStr) {
} }
/* triangulate. */ /* triangulate. */
for (var i = 0; i < ind.length - 2; i++) { for (var i = 0; i < pts.length - 2; i++) {
indices.push( out.push(
ind[0].iV, bufPositions[pts[0].iV],
ind[i + 1].iV, bufNormals[pts[0].iVn],
ind[i + 2].iV, bufPositions[pts[i + 1].iV],
bufNormals[pts[i + 1].iVn],
bufPositions[pts[i + 2].iV],
bufNormals[pts[i + 2].iVn],
); );
vertCount += 3;
} }
} }
}; };
@ -52,9 +59,5 @@ function parseObj(docStr) {
if (opFunc) opFunc(cont); if (opFunc) opFunc(cont);
} }
return [ return [new Float32Array(out.flat()), vertCount];
new Float32Array(positions.flat()),
new Float32Array(normals.flat()),
new Uint16Array(indices),
]
} }

View File

@ -25,21 +25,3 @@ buffer = (gl, data, program, attribute, size, type) => {
gl.vertexAttribPointer(a, size, type, false, 0, 0); gl.vertexAttribPointer(a, size, type, false, 0, 0);
gl.enableVertexAttribArray(a); gl.enableVertexAttribArray(a);
} }
// Draw a box
drawBox = (gl, n, viewProjMatrix, u_MvpMatrix, u_NormalMatrix) => {
// Compute mvp matrix
g_mvpMatrix.set(viewProjMatrix);
g_mvpMatrix.multiply(g_modelMatrix);
gl.uniformMatrix4fv(u_MvpMatrix, false, g_mvpMatrix.elements);
// Compute inverse transform
g_normalMatrix.setInverseOf(g_modelMatrix);
g_normalMatrix.transpose();
gl.uniformMatrix4fv(u_NormalMatrix, false, g_normalMatrix.elements);
// Draw
gl.drawElements(gl.TRIANGLES, n, gl.UNSIGNED_BYTE, 0);
}

96
model/4x4.obj Normal file
View File

@ -0,0 +1,96 @@
v -0.5 0.0625 -0.5
v -0.4375 0.0625 -0.5
v -0.4375 0.0625 -0.4375
v -0.5 0.0625 -0.4375
vn 0 1 0
f 3//1 2//1 1//1 4//1
v -0.4375 0.0625 -0.5
v -0.375 0.0625 -0.5
v -0.375 0.0625 -0.4375
v -0.4375 0.0625 -0.4375
vn 0 1 0
f 7//2 6//2 5//2 8//2
v -0.375 0.0625 -0.5
v -0.3125 0.0625 -0.5
v -0.3125 0.0625 -0.4375
v -0.375 0.0625 -0.4375
vn 0 1 0
f 11//3 10//3 9//3 12//3
v -0.3125 0.0625 -0.5
v -0.25 0.0625 -0.5
v -0.25 0.0625 -0.4375
v -0.3125 0.0625 -0.4375
vn 0 1 0
f 15//4 14//4 13//4 16//4
v -0.3125 0.0625 -0.4375
v -0.25 0.0625 -0.4375
v -0.25 0.0625 -0.375
v -0.3125 0.0625 -0.375
vn 0 1 0
f 19//5 18//5 17//5 20//5
v -0.3125 0.0625 -0.375
v -0.25 0.0625 -0.375
v -0.25 0.0625 -0.3125
v -0.3125 0.0625 -0.3125
vn 0 1 0
f 23//6 22//6 21//6 24//6
v -0.3125 0.0625 -0.3125
v -0.25 0.0625 -0.3125
v -0.25 0.0625 -0.25
v -0.3125 0.0625 -0.25
vn 0 1 0
f 27//7 26//7 25//7 28//7
v -0.375 0.0625 -0.3125
v -0.3125 0.0625 -0.3125
v -0.3125 0.0625 -0.25
v -0.375 0.0625 -0.25
vn 0 1 0
f 31//8 30//8 29//8 32//8
v -0.4375 0.0625 -0.3125
v -0.375 0.0625 -0.3125
v -0.375 0.0625 -0.25
v -0.4375 0.0625 -0.25
vn 0 1 0
f 35//9 34//9 33//9 36//9
v -0.5 0.0625 -0.3125
v -0.4375 0.0625 -0.3125
v -0.4375 0.0625 -0.25
v -0.5 0.0625 -0.25
vn 0 1 0
f 39//10 38//10 37//10 40//10
v -0.5 0.0625 -0.375
v -0.4375 0.0625 -0.375
v -0.4375 0.0625 -0.3125
v -0.5 0.0625 -0.3125
vn 0 1 0
f 43//11 42//11 41//11 44//11
v -0.5 0.0625 -0.4375
v -0.4375 0.0625 -0.4375
v -0.4375 0.0625 -0.375
v -0.5 0.0625 -0.375
vn 0 1 0
f 47//12 46//12 45//12 48//12
v -0.4375 0.0625 -0.4375
v -0.375 0.0625 -0.4375
v -0.375 0.0625 -0.375
v -0.4375 0.0625 -0.375
vn 0 1 0
f 51//13 50//13 49//13 52//13
v -0.375 0.0625 -0.4375
v -0.3125 0.0625 -0.4375
v -0.3125 0.0625 -0.375
v -0.375 0.0625 -0.375
vn 0 1 0
f 55//14 54//14 53//14 56//14
v -0.375 0.0625 -0.375
v -0.3125 0.0625 -0.375
v -0.3125 0.0625 -0.3125
v -0.375 0.0625 -0.3125
vn 0 1 0
f 59//15 58//15 57//15 60//15
v -0.4375 0.0625 -0.375
v -0.375 0.0625 -0.375
v -0.375 0.0625 -0.3125
v -0.4375 0.0625 -0.3125
vn 0 1 0
f 63//16 62//16 61//16 64//16

1733
model/SFX.obj Normal file

File diff suppressed because it is too large Load Diff

721
model/city.obj Normal file
View File

@ -0,0 +1,721 @@
# Blender 4.2.1 LTS
# www.blender.org
mtllib city.mtl
o Grid
v 0.400000 0.413149 0.800000
v -0.400000 0.221968 0.800000
v -0.600000 0.000000 1.000000
v -0.400000 0.000000 1.000000
v -0.200000 0.000000 1.000000
v 0.000000 0.000000 1.000000
v 0.200000 0.000000 1.000000
v 0.400000 0.000000 1.000000
v 0.600000 0.000000 1.000000
v -0.600000 0.221968 0.800000
v -0.400000 0.221968 1.000000
v -0.600000 0.000000 0.800000
v -0.400000 0.000000 0.800000
v -0.200000 0.000000 0.800000
v 0.000000 0.000000 0.800000
v 0.200000 0.000000 0.800000
v 0.400000 0.000000 0.800000
v 0.600000 0.000000 0.800000
v -0.600000 0.221968 1.000000
v 0.000000 0.414554 0.800000
v -0.600000 0.000000 0.600000
v -0.400000 0.000000 0.600000
v -0.200000 0.000000 0.600000
v 0.000000 0.000000 0.600000
v 0.200000 0.000000 0.600000
v 0.400000 0.000000 0.600000
v 0.600000 0.000000 0.600000
v -0.200000 0.414554 0.800000
v 0.000000 0.414554 1.000000
v -0.600000 0.000000 0.400000
v -0.400000 0.000000 0.400000
v -0.200000 0.000000 0.400000
v 0.000000 0.000000 0.400000
v 0.200000 0.000000 0.400000
v 0.400000 0.000000 0.400000
v 0.600000 0.000000 0.400000
v -0.200000 0.414554 1.000000
v -0.200000 0.435503 0.800000
v -0.600000 0.000000 0.200000
v -0.400000 0.000000 0.200000
v -0.200000 0.000000 0.200000
v 0.000000 0.000000 0.200000
v 0.200000 0.000000 0.200000
v 0.400000 0.000000 0.200000
v 0.600000 0.000000 0.200000
v -0.400000 0.435503 0.800000
v -0.200000 0.435503 1.000000
v -0.600000 0.000000 0.000000
v -0.400000 0.000000 0.000000
v -0.200000 0.000000 0.000000
v 0.000000 0.000000 0.000000
v 0.200000 0.000000 0.000000
v 0.400000 0.000000 0.000000
v 0.600000 0.000000 0.000000
v -0.400000 0.435503 1.000000
v 0.200000 0.174152 0.800000
v -0.600000 0.000000 -0.200000
v -0.400000 0.000000 -0.200000
v -0.200000 0.000000 -0.200000
v 0.000000 0.000000 -0.200000
v 0.200000 0.000000 -0.200000
v 0.400000 0.000000 -0.200000
v 0.600000 0.000000 -0.200000
v 0.000000 0.174152 0.800000
v 0.200000 0.174152 1.000000
v -0.600000 0.000000 -0.400000
v -0.400000 0.000000 -0.400000
v -0.200000 0.000000 -0.400000
v 0.000000 0.000000 -0.400000
v 0.200000 0.000000 -0.400000
v 0.400000 0.000000 -0.400000
v 0.600000 0.000000 -0.400000
v 0.400000 0.223774 0.600000
v 0.000000 0.174152 1.000000
v 0.400000 0.288562 0.800000
v -0.600000 0.000000 -0.600000
v -0.400000 0.000000 -0.600000
v -0.200000 0.000000 -0.600000
v 0.000000 0.000000 -0.600000
v 0.200000 0.000000 -0.600000
v 0.400000 0.000000 -0.600000
v 0.600000 0.000000 -0.600000
v 0.200000 0.223774 0.600000
v 0.400000 0.223774 0.800000
v 0.200000 0.288562 0.800000
v 0.400000 0.288562 1.000000
v -0.600000 0.000000 -0.800000
v -0.400000 0.000000 -0.800000
v -0.200000 0.000000 -0.800000
v 0.000000 0.000000 -0.800000
v 0.200000 0.000000 -0.800000
v 0.400000 0.000000 -0.800000
v 0.600000 0.000000 -0.800000
v 0.200000 0.223774 0.800000
v 0.600000 0.413149 0.600000
v -1.000000 0.000000 -1.000000
v 0.200000 0.288562 1.000000
v -0.600000 0.000000 -1.000000
v -0.400000 0.000000 -1.000000
v -0.200000 0.000000 -1.000000
v 0.000000 0.000000 -1.000000
v 0.200000 0.000000 -1.000000
v 0.400000 0.000000 -1.000000
v 0.600000 0.000000 -1.000000
v 0.400000 0.413149 0.600000
v 0.600000 0.413149 0.800000
v 0.600000 0.187758 0.800000
v 0.400000 0.187758 0.800000
v 0.600000 0.187758 1.000000
v 0.400000 0.187758 1.000000
v 0.000000 0.395022 0.800000
v 0.200000 0.395022 0.800000
v 0.000000 0.395022 0.600000
v 0.200000 0.395022 0.600000
v -0.400000 0.338544 0.800000
v -0.200000 0.338544 0.800000
v -0.400000 0.338544 0.600000
v -0.200000 0.338544 0.600000
v -0.200000 0.276772 0.800000
v 0.000000 0.276772 0.800000
v -0.200000 0.276772 0.600000
v 0.000000 0.276772 0.600000
v -0.600000 0.390102 0.800000
v -0.400000 0.390102 0.800000
v -0.600000 0.390102 0.600000
v -0.400000 0.390102 0.600000
v 0.400000 0.354913 0.600000
v 0.600000 0.354913 0.600000
v 0.400000 0.354913 0.400000
v 0.600000 0.354913 0.400000
v 0.200000 0.188715 0.600000
v 0.400000 0.188715 0.600000
v 0.200000 0.188715 0.400000
v 0.400000 0.188715 0.400000
v 0.000000 0.275488 0.600000
v 0.200000 0.275488 0.600000
v 0.000000 0.275488 0.400000
v 0.200000 0.275488 0.400000
v -0.200000 0.205598 0.600000
v 0.000000 0.205598 0.600000
v -0.200000 0.205598 0.400000
v 0.000000 0.205598 0.400000
v -0.400000 0.272565 0.600000
v -0.200000 0.272565 0.600000
v -0.400000 0.272565 0.400000
v -0.200000 0.272565 0.400000
v -0.600000 0.229103 0.600000
v -0.400000 0.229103 0.600000
v -0.600000 0.229103 0.400000
v -0.400000 0.229103 0.400000
v 0.400000 0.256841 0.400000
v 0.600000 0.256841 0.400000
v 0.400000 0.256841 0.200000
v 0.600000 0.256841 0.200000
v -0.600000 0.250985 0.400000
v -0.400000 0.250985 0.400000
v -0.600000 0.250985 0.200000
v -0.400000 0.250985 0.200000
v -0.200000 0.320911 0.400000
v 0.000000 0.320911 0.400000
v -0.200000 0.320911 0.200000
v 0.000000 0.320911 0.200000
v -0.400000 0.212080 0.400000
v -0.200000 0.212080 0.400000
v -0.400000 0.212080 0.200000
v -0.200000 0.212080 0.200000
v 0.200000 0.159733 0.400000
v 0.400000 0.159733 0.400000
v 0.200000 0.159733 0.200000
v 0.400000 0.159733 0.200000
v 0.000000 0.185677 0.400000
v 0.200000 0.185677 0.400000
v 0.000000 0.185677 0.200000
v 0.200000 0.185677 0.200000
v 0.400000 0.286925 0.200000
v 0.600000 0.286925 0.200000
v 0.400000 0.286925 0.000000
v 0.600000 0.286925 0.000000
v 0.200000 0.336783 0.200000
v 0.400000 0.336783 0.200000
v 0.200000 0.336783 0.000000
v 0.400000 0.336783 0.000000
v -0.600000 0.380897 0.200000
v -0.400000 0.380897 0.200000
v -0.600000 0.380897 0.000000
v -0.400000 0.380897 0.000000
v -0.200000 0.300266 0.200000
v 0.000000 0.300266 0.200000
v -0.200000 0.300266 0.000000
v 0.000000 0.300266 0.000000
v 0.000000 0.417383 0.200000
v 0.200000 0.417383 0.200000
v 0.000000 0.417383 0.000000
v 0.200000 0.417383 0.000000
v -0.400000 0.249593 0.200000
v -0.200000 0.249593 0.200000
v -0.400000 0.249593 0.000000
v -0.200000 0.249593 0.000000
v 0.200000 0.259492 0.000000
v 0.400000 0.259492 0.000000
v 0.200000 0.259492 -0.200000
v 0.400000 0.259492 -0.200000
v 0.400000 0.197488 0.000000
v 0.600000 0.197488 0.000000
v 0.400000 0.197488 -0.200000
v 0.600000 0.197488 -0.200000
v 0.000000 0.281435 0.000000
v 0.200000 0.281435 0.000000
v 0.000000 0.281435 -0.200000
v 0.200000 0.281435 -0.200000
v -0.200000 0.250320 0.000000
v 0.000000 0.250320 0.000000
v -0.200000 0.250320 -0.200000
v 0.000000 0.250320 -0.200000
v -0.400000 0.317351 0.000000
v -0.200000 0.317351 0.000000
v -0.400000 0.317351 -0.200000
v -0.200000 0.317351 -0.200000
v -0.600000 0.240215 0.000000
v -0.400000 0.240215 0.000000
v -0.600000 0.240215 -0.200000
v -0.400000 0.240215 -0.200000
v 0.400000 0.143609 -0.200000
v 0.600000 0.143609 -0.200000
v 0.400000 0.143609 -0.400000
v 0.600000 0.143609 -0.400000
v 0.200000 0.076417 -0.200000
v 0.400000 0.076417 -0.200000
v 0.200000 0.076417 -0.400000
v 0.400000 0.076417 -0.400000
v 0.000000 0.202130 -0.200000
v 0.200000 0.202130 -0.200000
v 0.000000 0.202130 -0.400000
v 0.200000 0.202130 -0.400000
v -0.200000 0.188054 -0.200000
v 0.000000 0.188054 -0.200000
v -0.200000 0.188054 -0.400000
v 0.000000 0.188054 -0.400000
v -0.400000 0.160599 -0.200000
v -0.200000 0.160599 -0.200000
v -0.400000 0.160599 -0.400000
v -0.200000 0.160599 -0.400000
v -0.600000 0.208035 -0.200000
v -0.400000 0.208035 -0.200000
v -0.600000 0.208035 -0.400000
v -0.400000 0.208035 -0.400000
v 0.400000 0.172789 -0.400000
v 0.600000 0.172789 -0.400000
v 0.400000 0.172789 -0.600000
v 0.600000 0.172789 -0.600000
v 0.200000 0.052830 -0.400000
v 0.400000 0.052830 -0.400000
v 0.200000 0.052830 -0.600000
v 0.400000 0.052830 -0.600000
v 0.000000 0.065611 -0.400000
v 0.200000 0.065611 -0.400000
v 0.000000 0.065611 -0.600000
v 0.200000 0.065611 -0.600000
v -0.200000 0.154034 -0.400000
v 0.000000 0.154034 -0.400000
v -0.200000 0.154034 -0.600000
v 0.000000 0.154034 -0.600000
v -0.400000 0.108064 -0.400000
v -0.200000 0.108064 -0.400000
v -0.400000 0.108064 -0.600000
v -0.200000 0.108064 -0.600000
v -0.600000 0.151829 -0.400000
v -0.400000 0.151829 -0.400000
v -0.600000 0.151829 -0.600000
v -0.400000 0.151829 -0.600000
v -0.600000 0.306848 -0.800000
v -0.400000 0.306848 -0.800000
v -0.600000 0.306848 -1.000000
v -0.400000 0.306848 -1.000000
v -0.400000 0.202994 -0.800000
v -0.200000 0.202994 -0.800000
v -0.400000 0.202994 -1.000000
v -0.200000 0.202994 -1.000000
v -0.200000 0.240951 -0.800000
v 0.000000 0.240951 -0.800000
v -0.200000 0.240951 -1.000000
v 0.000000 0.240951 -1.000000
v 0.000000 0.222220 -0.800000
v 0.200000 0.222220 -0.800000
v 0.000000 0.222220 -1.000000
v 0.200000 0.222220 -1.000000
v 0.200000 0.179921 -0.800000
v 0.400000 0.179921 -0.800000
v 0.200000 0.179921 -1.000000
v 0.400000 0.179921 -1.000000
v 0.400000 0.230463 -0.800000
v 0.600000 0.230463 -0.800000
v 0.400000 0.230463 -1.000000
v 0.600000 0.230463 -1.000000
v 0.400000 0.243266 -0.600000
v 0.600000 0.243266 -0.600000
v 0.400000 0.243266 -0.800000
v 0.600000 0.243266 -0.800000
v 0.200000 0.272142 -0.600000
v 0.400000 0.272142 -0.600000
v 0.200000 0.272142 -0.800000
v 0.400000 0.272142 -0.800000
v 0.000000 0.257938 -0.600000
v 0.200000 0.257938 -0.600000
v 0.000000 0.257938 -0.800000
v 0.200000 0.257938 -0.800000
v -0.200000 0.287515 -0.600000
v 0.000000 0.287515 -0.600000
v -0.200000 0.287515 -0.800000
v 0.000000 0.287515 -0.800000
v -0.400000 0.233834 -0.600000
v -0.200000 0.233834 -0.600000
v -0.400000 0.233834 -0.800000
v -0.200000 0.233834 -0.800000
v -0.600000 0.195124 -0.600000
v -0.400000 0.195124 -0.600000
v -0.600000 0.195124 -0.800000
v -0.400000 0.195124 -0.800000
vn -1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 1.0000
vn 1.0000 -0.0000 -0.0000
vn -0.0000 -0.0000 -1.0000
vn -0.0000 1.0000 -0.0000
vt 0.000000 0.000000
vt 0.300000 0.000000
vt 0.300000 0.100000
vt 0.500000 0.100000
vt 0.400000 0.100000
vt 0.600000 0.000000
vt 0.600000 0.100000
vt 0.700000 0.100000
vt 0.800000 0.100000
vt 0.200000 0.100000
vt 0.200000 0.000000
vt 0.200000 0.100000
vt 0.500000 0.200000
vt 0.600000 0.200000
vt 0.500000 0.000000
vt 0.400000 0.000000
vt 0.200000 0.200000
vt 0.300000 0.200000
vt 0.400000 0.200000
vt 0.500000 0.200000
vt 0.500000 0.300000
vt 0.600000 0.200000
vt 0.600000 0.300000
vt 0.800000 0.300000
vt 0.700000 0.300000
vt 0.300000 0.300000
vt 0.300000 0.400000
vt 0.400000 0.300000
vt 0.400000 0.400000
vt 0.600000 0.400000
vt 0.500000 0.400000
vt 0.700000 0.400000
vt 0.800000 0.400000
vt 0.300000 0.500000
vt 0.400000 0.500000
vt 0.600000 0.500000
vt 0.500000 0.500000
vt 0.700000 0.500000
vt 0.200000 0.500000
vt 0.600000 0.600000
vt 0.700000 0.600000
vt 0.300000 0.600000
vt 0.300000 0.700000
vt 0.400000 0.600000
vt 0.400000 0.700000
vt 0.500000 0.600000
vt 0.500000 0.700000
vt 0.700000 0.700000
vt 0.600000 0.700000
vt 0.800000 0.700000
vt 0.700000 0.200000
vt 0.300000 0.800000
vt 0.200000 0.800000
vt 0.400000 0.800000
vt 0.500000 0.800000
vt 0.600000 0.800000
vt 0.700000 0.200000
vt 0.700000 0.000000
vt 0.700000 0.800000
vt 0.700000 0.900000
vt 0.800000 0.200000
vt 0.800000 0.900000
vt 0.800000 0.200000
vt 0.800000 0.000000
vt 0.400000 0.200000
vt 0.300000 0.200000
vt 0.200000 0.200000
vt 0.200000 0.300000
vt 0.200000 0.300000
vt 0.200000 0.400000
vt 0.200000 0.400000
vt 0.800000 0.500000
vt 0.200000 0.500000
vt 0.800000 0.600000
vt 0.200000 0.600000
vt 0.200000 0.600000
vt 0.200000 0.700000
vt 0.200000 0.700000
vt 0.800000 0.800000
vt 0.200000 0.800000
vt 0.200000 0.900000
vt 0.300000 0.900000
vt 0.300000 1.000000
vt 0.200000 1.000000
vt 0.200000 0.900000
vt 0.400000 0.900000
vt 0.400000 1.000000
vt 0.500000 0.900000
vt 0.500000 1.000000
vt 0.600000 0.900000
vt 0.600000 1.000000
vt 0.700000 1.000000
vt 0.800000 1.000000
s 0
f 12/1/1 3/1/1 19/1/1 10/1/1
f 3/1/2 4/1/2 11/1/2 19/1/2
f 4/2/3 13/3/3 2/3/3 11/2/3
f 4/1/2 5/1/2 47/1/2 55/1/2
f 15/4/4 14/5/4 28/5/4 20/4/4
f 7/6/3 16/7/3 56/7/3 65/6/3
f 17/8/4 16/7/4 85/7/4 75/8/4
f 18/9/4 17/8/4 108/8/4 107/9/4
f 13/3/4 12/10/4 10/10/4 2/3/4
f 19/11/5 11/2/5 2/3/5 10/12/5
f 12/10/2 13/3/2 124/3/2 123/10/2
f 13/3/2 14/5/2 116/5/2 115/3/2
f 15/4/3 24/13/3 122/13/3 120/4/3
f 16/7/3 25/14/3 114/14/3 112/7/3
f 16/7/2 17/8/2 84/8/2 94/7/2
f 17/8/2 18/9/2 106/9/2 1/8/2
f 6/15/3 15/4/3 20/4/3 29/15/3
f 14/5/1 5/16/1 37/16/1 28/5/1
f 21/17/2 22/18/2 148/18/2 147/17/2
f 22/18/2 23/19/2 144/19/2 143/18/2
f 24/20/3 33/21/3 142/21/3 140/20/3
f 25/22/3 34/23/3 138/23/3 136/22/3
f 34/23/1 25/22/1 131/22/1 133/23/1
f 36/24/4 35/25/4 129/25/4 130/24/4
f 5/1/2 6/1/2 29/1/2 37/1/2
f 37/16/5 29/15/5 20/4/5 28/5/5
f 31/26/3 40/27/3 158/27/3 156/26/3
f 32/28/3 41/29/3 166/29/3 164/28/3
f 41/29/1 32/28/1 159/28/1 161/29/1
f 43/30/4 42/31/4 173/31/4 174/30/4
f 44/32/4 43/30/4 169/30/4 170/32/4
f 45/33/4 44/32/4 153/32/4 154/33/4
f 14/5/4 13/3/4 46/3/4 38/5/4
f 5/16/3 14/5/3 38/5/3 47/16/3
f 40/27/3 49/34/3 186/34/3 184/27/3
f 41/29/3 50/35/3 198/35/3 196/29/3
f 50/35/1 41/29/1 187/29/1 189/35/1
f 52/36/4 51/37/4 193/37/4 194/36/4
f 44/32/3 53/38/3 182/38/3 180/32/3
f 45/1/3 54/1/3 178/1/3 176/1/3
f 13/3/1 4/2/1 55/2/1 46/3/1
f 55/2/5 47/16/5 38/5/5 46/3/5
f 48/39/2 49/34/2 220/34/2 219/39/2
f 49/34/2 50/35/2 216/35/2 215/34/2
f 50/35/2 51/37/2 212/37/2 211/35/2
f 52/36/3 61/40/3 210/40/3 208/36/3
f 53/38/3 62/41/3 202/41/3 200/38/3
f 54/1/3 63/1/3 206/1/3 204/1/3
f 15/4/1 6/15/1 74/15/1 64/4/1
f 6/1/2 7/1/2 65/1/2 74/1/2
f 58/42/3 67/43/3 246/43/3 244/42/3
f 59/44/3 68/45/3 242/45/3 240/44/3
f 60/46/3 69/47/3 238/47/3 236/46/3
f 69/47/1 60/46/1 231/46/1 233/47/1
f 71/48/4 70/49/4 229/49/4 230/48/4
f 72/50/4 71/48/4 225/48/4 226/50/4
f 26/51/4 25/22/4 83/22/4 73/51/4
f 25/14/1 16/7/1 94/7/1 83/14/1
f 16/7/4 15/4/4 64/4/4 56/7/4
f 74/15/5 65/6/5 56/7/5 64/4/5
f 77/52/4 76/53/4 269/53/4 270/52/4
f 78/54/4 77/52/4 265/52/4 266/54/4
f 79/55/4 78/54/4 261/54/4 262/55/4
f 80/56/4 79/55/4 257/55/4 258/56/4
f 70/49/2 71/48/2 252/48/2 251/49/2
f 71/48/2 72/50/2 248/50/2 247/48/2
f 17/8/3 26/57/3 73/57/3 84/8/3
f 94/7/5 84/8/5 73/57/5 83/14/5
f 8/58/3 17/8/3 75/8/3 86/58/3
f 16/7/1 7/6/1 97/6/1 85/7/1
f 76/53/2 77/52/2 316/52/2 315/53/2
f 77/52/2 78/54/2 312/54/2 311/52/2
f 78/54/2 79/55/2 308/55/2 307/54/2
f 79/55/2 80/56/2 304/56/2 303/55/2
f 81/59/3 92/60/3 302/60/3 300/59/3
f 92/60/1 81/59/1 295/59/1 297/60/1
f 27/61/4 26/51/4 105/51/4 95/61/4
f 26/57/1 17/8/1 1/8/1 105/57/1
f 7/1/2 8/1/2 86/1/2 97/1/2
f 9/1/3 18/1/3 107/1/3 109/1/3
f 98/1/1 87/1/1 271/1/1 273/1/1
f 100/1/4 99/1/4 277/1/4 278/1/4
f 101/1/4 100/1/4 281/1/4 282/1/4
f 102/1/4 101/1/4 285/1/4 286/1/4
f 103/1/4 102/1/4 289/1/4 290/1/4
f 92/60/2 93/62/2 292/62/2 291/60/2
f 18/1/3 27/1/3 95/1/3 106/1/3
f 1/8/5 106/9/5 95/63/5 105/57/5
f 110/58/5 109/64/5 107/9/5 108/8/5
f 17/8/1 8/58/1 110/58/1 108/8/1
f 8/1/2 9/1/2 109/1/2 110/1/2
f 97/6/5 86/58/5 75/8/5 85/7/5
f 111/4/5 112/7/5 114/14/5 113/13/5
f 24/13/1 15/4/1 111/4/1 113/13/1
f 25/22/4 24/20/4 113/20/4 114/22/4
f 15/4/2 16/7/2 112/7/2 111/4/2
f 115/3/5 116/5/5 118/65/5 117/66/5
f 14/5/3 23/65/3 118/65/3 116/5/3
f 22/66/1 13/3/1 115/3/1 117/66/1
f 23/19/4 22/18/4 117/18/4 118/19/4
f 119/5/5 120/4/5 122/13/5 121/65/5
f 23/65/1 14/5/1 119/5/1 121/65/1
f 14/5/2 15/4/2 120/4/2 119/5/2
f 24/20/4 23/19/4 121/19/4 122/20/4
f 123/10/5 124/3/5 126/66/5 125/67/5
f 22/18/4 21/17/4 125/17/4 126/18/4
f 13/3/3 22/66/3 126/66/3 124/3/3
f 21/1/1 12/1/1 123/1/1 125/1/1
f 127/51/5 128/61/5 130/24/5 129/25/5
f 26/51/2 27/61/2 128/61/2 127/51/2
f 27/1/3 36/1/3 130/1/3 128/1/3
f 35/25/1 26/51/1 127/51/1 129/25/1
f 131/22/5 132/51/5 134/25/5 133/23/5
f 35/25/4 34/23/4 133/23/4 134/25/4
f 25/22/2 26/51/2 132/51/2 131/22/2
f 26/51/3 35/25/3 134/25/3 132/51/3
f 135/20/5 136/22/5 138/23/5 137/21/5
f 33/21/1 24/20/1 135/20/1 137/21/1
f 34/23/4 33/21/4 137/21/4 138/23/4
f 24/20/2 25/22/2 136/22/2 135/20/2
f 139/19/5 140/20/5 142/21/5 141/28/5
f 32/28/1 23/19/1 139/19/1 141/28/1
f 33/21/4 32/28/4 141/28/4 142/21/4
f 23/19/2 24/20/2 140/20/2 139/19/2
f 143/18/5 144/19/5 146/28/5 145/26/5
f 23/19/3 32/28/3 146/28/3 144/19/3
f 31/26/1 22/18/1 143/18/1 145/26/1
f 32/28/4 31/26/4 145/26/4 146/28/4
f 147/17/5 148/18/5 150/26/5 149/68/5
f 22/18/3 31/26/3 150/26/3 148/18/3
f 30/1/1 21/1/1 147/1/1 149/1/1
f 31/26/4 30/69/4 149/69/4 150/26/4
f 151/25/5 152/24/5 154/33/5 153/32/5
f 35/25/2 36/24/2 152/24/2 151/25/2
f 36/1/3 45/1/3 154/1/3 152/1/3
f 44/32/1 35/25/1 151/25/1 153/32/1
f 155/69/5 156/26/5 158/27/5 157/70/5
f 39/1/1 30/1/1 155/1/1 157/1/1
f 40/27/4 39/71/4 157/71/4 158/27/4
f 30/69/2 31/26/2 156/26/2 155/69/2
f 159/28/5 160/21/5 162/31/5 161/29/5
f 42/31/4 41/29/4 161/29/4 162/31/4
f 32/28/2 33/21/2 160/21/2 159/28/2
f 33/21/3 42/31/3 162/31/3 160/21/3
f 163/26/5 164/28/5 166/29/5 165/27/5
f 40/27/1 31/26/1 163/26/1 165/27/1
f 41/29/4 40/27/4 165/27/4 166/29/4
f 31/26/2 32/28/2 164/28/2 163/26/2
f 167/23/5 168/25/5 170/32/5 169/30/5
f 34/23/2 35/25/2 168/25/2 167/23/2
f 35/25/3 44/32/3 170/32/3 168/25/3
f 43/30/1 34/23/1 167/23/1 169/30/1
f 171/21/5 172/23/5 174/30/5 173/31/5
f 33/21/2 34/23/2 172/23/2 171/21/2
f 34/23/3 43/30/3 174/30/3 172/23/3
f 42/31/1 33/21/1 171/21/1 173/31/1
f 175/32/5 176/33/5 178/72/5 177/38/5
f 53/38/1 44/32/1 175/32/1 177/38/1
f 54/72/4 53/38/4 177/38/4 178/72/4
f 44/32/2 45/33/2 176/33/2 175/32/2
f 179/30/5 180/32/5 182/38/5 181/36/5
f 52/36/1 43/30/1 179/30/1 181/36/1
f 53/38/4 52/36/4 181/36/4 182/38/4
f 43/30/2 44/32/2 180/32/2 179/30/2
f 183/71/5 184/27/5 186/34/5 185/73/5
f 48/1/1 39/1/1 183/1/1 185/1/1
f 49/34/4 48/39/4 185/39/4 186/34/4
f 39/71/2 40/27/2 184/27/2 183/71/2
f 187/29/5 188/31/5 190/37/5 189/35/5
f 51/37/4 50/35/4 189/35/4 190/37/4
f 41/29/2 42/31/2 188/31/2 187/29/2
f 42/31/3 51/37/3 190/37/3 188/31/3
f 191/31/5 192/30/5 194/36/5 193/37/5
f 42/31/2 43/30/2 192/30/2 191/31/2
f 43/30/3 52/36/3 194/36/3 192/30/3
f 51/37/1 42/31/1 191/31/1 193/37/1
f 195/27/5 196/29/5 198/35/5 197/34/5
f 49/34/1 40/27/1 195/27/1 197/34/1
f 50/35/4 49/34/4 197/34/4 198/35/4
f 40/27/2 41/29/2 196/29/2 195/27/2
f 199/36/5 200/38/5 202/41/5 201/40/5
f 61/40/1 52/36/1 199/36/1 201/40/1
f 62/41/4 61/40/4 201/40/4 202/41/4
f 52/36/2 53/38/2 200/38/2 199/36/2
f 203/38/5 204/72/5 206/74/5 205/41/5
f 62/41/1 53/38/1 203/38/1 205/41/1
f 63/74/4 62/41/4 205/41/4 206/74/4
f 53/38/2 54/72/2 204/72/2 203/38/2
f 207/37/5 208/36/5 210/40/5 209/46/5
f 60/46/1 51/37/1 207/37/1 209/46/1
f 61/40/4 60/46/4 209/46/4 210/40/4
f 51/37/2 52/36/2 208/36/2 207/37/2
f 211/35/5 212/37/5 214/46/5 213/44/5
f 51/37/3 60/46/3 214/46/3 212/37/3
f 59/44/1 50/35/1 211/35/1 213/44/1
f 60/46/4 59/44/4 213/44/4 214/46/4
f 215/34/5 216/35/5 218/44/5 217/42/5
f 50/35/3 59/44/3 218/44/3 216/35/3
f 58/42/1 49/34/1 215/34/1 217/42/1
f 59/44/4 58/42/4 217/42/4 218/44/4
f 219/39/5 220/34/5 222/42/5 221/75/5
f 49/34/3 58/42/3 222/42/3 220/34/3
f 57/1/1 48/1/1 219/1/1 221/1/1
f 58/42/4 57/76/4 221/76/4 222/42/4
f 223/41/5 224/74/5 226/50/5 225/48/5
f 62/41/2 63/74/2 224/74/2 223/41/2
f 63/1/3 72/1/3 226/1/3 224/1/3
f 71/48/1 62/41/1 223/41/1 225/48/1
f 227/40/5 228/41/5 230/48/5 229/49/5
f 61/40/2 62/41/2 228/41/2 227/40/2
f 62/41/3 71/48/3 230/48/3 228/41/3
f 70/49/1 61/40/1 227/40/1 229/49/1
f 231/46/5 232/40/5 234/49/5 233/47/5
f 70/49/4 69/47/4 233/47/4 234/49/4
f 60/46/2 61/40/2 232/40/2 231/46/2
f 61/40/3 70/49/3 234/49/3 232/40/3
f 235/44/5 236/46/5 238/47/5 237/45/5
f 68/45/1 59/44/1 235/44/1 237/45/1
f 69/47/4 68/45/4 237/45/4 238/47/4
f 59/44/2 60/46/2 236/46/2 235/44/2
f 239/42/5 240/44/5 242/45/5 241/43/5
f 67/43/1 58/42/1 239/42/1 241/43/1
f 68/45/4 67/43/4 241/43/4 242/45/4
f 58/42/2 59/44/2 240/44/2 239/42/2
f 243/76/5 244/42/5 246/43/5 245/77/5
f 66/1/1 57/1/1 243/1/1 245/1/1
f 67/43/4 66/78/4 245/78/4 246/43/4
f 57/76/2 58/42/2 244/42/2 243/76/2
f 247/48/5 248/50/5 250/79/5 249/59/5
f 72/1/3 82/1/3 250/1/3 248/1/3
f 81/59/1 71/48/1 247/48/1 249/59/1
f 82/79/4 81/59/4 249/59/4 250/79/4
f 251/49/5 252/48/5 254/59/5 253/56/5
f 71/48/3 81/59/3 254/59/3 252/48/3
f 80/56/1 70/49/1 251/49/1 253/56/1
f 81/59/4 80/56/4 253/56/4 254/59/4
f 255/47/5 256/49/5 258/56/5 257/55/5
f 69/47/2 70/49/2 256/49/2 255/47/2
f 70/49/3 80/56/3 258/56/3 256/49/3
f 79/55/1 69/47/1 255/47/1 257/55/1
f 259/45/5 260/47/5 262/55/5 261/54/5
f 68/45/2 69/47/2 260/47/2 259/45/2
f 69/47/3 79/55/3 262/55/3 260/47/3
f 78/54/1 68/45/1 259/45/1 261/54/1
f 263/43/5 264/45/5 266/54/5 265/52/5
f 67/43/2 68/45/2 264/45/2 263/43/2
f 68/45/3 78/54/3 266/54/3 264/45/3
f 77/52/1 67/43/1 263/43/1 265/52/1
f 267/78/5 268/43/5 270/52/5 269/80/5
f 66/78/2 67/43/2 268/43/2 267/78/2
f 67/43/3 77/52/3 270/52/3 268/43/3
f 76/1/1 66/1/1 267/1/1 269/1/1
f 271/81/5 272/82/5 274/83/5 273/84/5
f 99/1/4 98/1/4 273/1/4 274/1/4
f 87/85/2 88/82/2 272/82/2 271/85/2
f 88/82/3 99/83/3 274/83/3 272/82/3
f 275/82/5 276/86/5 278/87/5 277/83/5
f 88/82/2 89/86/2 276/86/2 275/82/2
f 89/86/3 100/87/3 278/87/3 276/86/3
f 99/83/1 88/82/1 275/82/1 277/83/1
f 279/86/5 280/88/5 282/89/5 281/87/5
f 89/86/2 90/88/2 280/88/2 279/86/2
f 90/88/3 101/89/3 282/89/3 280/88/3
f 100/87/1 89/86/1 279/86/1 281/87/1
f 283/88/5 284/90/5 286/91/5 285/89/5
f 90/88/2 91/90/2 284/90/2 283/88/2
f 91/90/3 102/91/3 286/91/3 284/90/3
f 101/89/1 90/88/1 283/88/1 285/89/1
f 287/90/5 288/60/5 290/92/5 289/91/5
f 91/90/2 92/60/2 288/60/2 287/90/2
f 92/60/3 103/92/3 290/92/3 288/60/3
f 102/91/1 91/90/1 287/90/1 289/91/1
f 291/60/5 292/62/5 294/93/5 293/92/5
f 93/1/3 104/1/3 294/1/3 292/1/3
f 103/92/1 92/60/1 291/60/1 293/92/1
f 104/1/4 103/1/4 293/1/4 294/1/4
f 295/59/5 296/79/5 298/62/5 297/60/5
f 93/62/4 92/60/4 297/60/4 298/62/4
f 81/59/2 82/79/2 296/79/2 295/59/2
f 82/1/3 93/1/3 298/1/3 296/1/3
f 299/56/5 300/59/5 302/60/5 301/90/5
f 91/90/1 80/56/1 299/56/1 301/90/1
f 92/60/4 91/90/4 301/90/4 302/60/4
f 80/56/2 81/59/2 300/59/2 299/56/2
f 303/55/5 304/56/5 306/90/5 305/88/5
f 80/56/3 91/90/3 306/90/3 304/56/3
f 90/88/1 79/55/1 303/55/1 305/88/1
f 91/90/4 90/88/4 305/88/4 306/90/4
f 307/54/5 308/55/5 310/88/5 309/86/5
f 79/55/3 90/88/3 310/88/3 308/55/3
f 89/86/1 78/54/1 307/54/1 309/86/1
f 90/88/4 89/86/4 309/86/4 310/88/4
f 311/52/5 312/54/5 314/86/5 313/82/5
f 78/54/3 89/86/3 314/86/3 312/54/3
f 88/82/1 77/52/1 311/52/1 313/82/1
f 89/86/4 88/82/4 313/82/4 314/86/4
f 315/53/5 316/52/5 318/82/5 317/85/5
f 77/52/3 88/82/3 318/82/3 316/52/3
f 87/1/1 76/1/1 315/1/1 317/1/1
f 88/82/4 87/85/4 317/85/4 318/82/4

5730
model/gendo-ikari.obj Normal file

File diff suppressed because it is too large Load Diff

4992
model/gendo-ikari2.obj Normal file

File diff suppressed because it is too large Load Diff

270
model/iso.obj Normal file
View File

@ -0,0 +1,270 @@
# Blender 4.2.1 LTS
# www.blender.org
mtllib iso.mtl
o Icosphere
v 0.000000 -1.000000 0.000000
v 0.723607 -0.447220 0.525725
v -0.276388 -0.447220 0.850649
v -0.894426 -0.447216 0.000000
v -0.276388 -0.447220 -0.850649
v 0.723607 -0.447220 -0.525725
v 0.276388 0.447220 0.850649
v -0.723607 0.447220 0.525725
v -0.723607 0.447220 -0.525725
v 0.276388 0.447220 -0.850649
v 0.894426 0.447216 0.000000
v 0.000000 1.000000 0.000000
v -0.162456 -0.850654 0.499995
v 0.425323 -0.850654 0.309011
v 0.262869 -0.525738 0.809012
v 0.850648 -0.525736 0.000000
v 0.425323 -0.850654 -0.309011
v -0.525730 -0.850652 0.000000
v -0.688189 -0.525736 0.499997
v -0.162456 -0.850654 -0.499995
v -0.688189 -0.525736 -0.499997
v 0.262869 -0.525738 -0.809012
v 0.951058 0.000000 0.309013
v 0.951058 0.000000 -0.309013
v 0.000000 0.000000 1.000000
v 0.587786 0.000000 0.809017
v -0.951058 0.000000 0.309013
v -0.587786 0.000000 0.809017
v -0.587786 0.000000 -0.809017
v -0.951058 0.000000 -0.309013
v 0.587786 0.000000 -0.809017
v 0.000000 0.000000 -1.000000
v 0.688189 0.525736 0.499997
v -0.262869 0.525738 0.809012
v -0.850648 0.525736 0.000000
v -0.262869 0.525738 -0.809012
v 0.688189 0.525736 -0.499997
v 0.162456 0.850654 0.499995
v 0.525730 0.850652 0.000000
v -0.425323 0.850654 0.309011
v -0.425323 0.850654 -0.309011
v 0.162456 0.850654 -0.499995
vn 0.1024 -0.9435 0.3151
vn 0.7002 -0.6617 0.2680
vn -0.2680 -0.9435 0.1947
vn -0.2680 -0.9435 -0.1947
vn 0.1024 -0.9435 -0.3151
vn 0.9050 -0.3304 0.2680
vn 0.0247 -0.3304 0.9435
vn -0.8897 -0.3304 0.3151
vn -0.5746 -0.3304 -0.7488
vn 0.5346 -0.3304 -0.7779
vn 0.8026 -0.1256 0.5831
vn -0.3066 -0.1256 0.9435
vn -0.9921 -0.1256 -0.0000
vn -0.3066 -0.1256 -0.9435
vn 0.8026 -0.1256 -0.5831
vn 0.4089 0.6617 0.6284
vn -0.4713 0.6617 0.5831
vn -0.7002 0.6617 -0.2680
vn 0.0385 0.6617 -0.7488
vn 0.7240 0.6617 -0.1947
vn 0.2680 0.9435 -0.1947
vn 0.4911 0.7947 -0.3568
vn 0.4089 0.6617 -0.6284
vn -0.1024 0.9435 -0.3151
vn -0.1876 0.7947 -0.5773
vn -0.4713 0.6617 -0.5831
vn -0.3313 0.9435 -0.0000
vn -0.6071 0.7947 -0.0000
vn -0.7002 0.6617 0.2680
vn -0.1024 0.9435 0.3151
vn -0.1876 0.7947 0.5773
vn 0.0385 0.6617 0.7488
vn 0.2680 0.9435 0.1947
vn 0.4911 0.7947 0.3568
vn 0.7240 0.6617 0.1947
vn 0.8897 0.3304 -0.3151
vn 0.7947 0.1876 -0.5773
vn 0.5746 0.3304 -0.7488
vn -0.0247 0.3304 -0.9435
vn -0.3035 0.1876 -0.9342
vn -0.5346 0.3304 -0.7779
vn -0.9050 0.3304 -0.2680
vn -0.9822 0.1876 -0.0000
vn -0.9050 0.3304 0.2680
vn -0.5346 0.3304 0.7779
vn -0.3035 0.1876 0.9342
vn -0.0247 0.3304 0.9435
vn 0.5746 0.3304 0.7488
vn 0.7947 0.1876 0.5773
vn 0.8897 0.3304 0.3151
vn 0.3066 0.1256 -0.9435
vn 0.3035 -0.1876 -0.9342
vn 0.0247 -0.3304 -0.9435
vn -0.8026 0.1256 -0.5831
vn -0.7947 -0.1876 -0.5773
vn -0.8897 -0.3304 -0.3151
vn -0.8026 0.1256 0.5831
vn -0.7947 -0.1876 0.5773
vn -0.5746 -0.3304 0.7488
vn 0.3066 0.1256 0.9435
vn 0.3035 -0.1876 0.9342
vn 0.5346 -0.3304 0.7779
vn 0.9921 0.1256 -0.0000
vn 0.9822 -0.1876 -0.0000
vn 0.9050 -0.3304 -0.2680
vn 0.4713 -0.6617 -0.5831
vn 0.1876 -0.7947 -0.5773
vn -0.0385 -0.6617 -0.7488
vn -0.4089 -0.6617 -0.6284
vn -0.4911 -0.7947 -0.3568
vn -0.7240 -0.6617 -0.1947
vn -0.7240 -0.6617 0.1947
vn -0.4911 -0.7947 0.3568
vn -0.4089 -0.6617 0.6284
vn 0.7002 -0.6617 -0.2680
vn 0.6071 -0.7947 -0.0000
vn 0.3313 -0.9435 -0.0000
vn -0.0385 -0.6617 0.7488
vn 0.1876 -0.7947 0.5773
vn 0.4713 -0.6617 0.5831
vt 0.181819 0.000000
vt 0.227273 0.078731
vt 0.136365 0.078731
vt 0.272728 0.157461
vt 0.318182 0.078731
vt 0.363637 0.157461
vt 0.909091 0.000000
vt 0.954545 0.078731
vt 0.863636 0.078731
vt 0.727273 0.000000
vt 0.772727 0.078731
vt 0.681818 0.078731
vt 0.545455 0.000000
vt 0.590909 0.078731
vt 0.500000 0.078731
vt 0.318182 0.236191
vt 0.090910 0.157461
vt 0.181819 0.157461
vt 0.136365 0.236191
vt 0.818182 0.157461
vt 0.909091 0.157461
vt 0.863636 0.236191
vt 0.636364 0.157461
vt 0.727273 0.157461
vt 0.681818 0.236191
vt 0.454546 0.157461
vt 0.545455 0.157461
vt 0.500000 0.236191
vt 0.227273 0.236191
vt 0.045455 0.236191
vt 0.772727 0.236191
vt 0.590909 0.236191
vt 0.409092 0.236191
vt 0.181819 0.314921
vt 0.272728 0.314921
vt 0.227273 0.393651
vt 0.000000 0.314921
vt 0.090910 0.314921
vt 0.045455 0.393651
vt 0.727273 0.314921
vt 0.818182 0.314921
vt 0.772727 0.393651
vt 0.545455 0.314921
vt 0.636364 0.314921
vt 0.590909 0.393651
vt 0.363637 0.314921
vt 0.454546 0.314921
vt 0.409092 0.393651
vt 0.500000 0.393651
vt 0.454546 0.472382
vt 0.681818 0.393651
vt 0.636364 0.472382
vt 0.863636 0.393651
vt 0.818182 0.472382
vt 0.909091 0.314921
vt 0.136365 0.393651
vt 0.090910 0.472382
vt 0.318182 0.393651
vt 0.272728 0.472382
vt 0.954545 0.236191
vt 1.000000 0.157461
vt 0.409092 0.078731
vt 0.363637 0.000000
s 0
f 1/1/1 14/2/1 13/3/1
f 2/4/2 14/5/2 16/6/2
f 1/7/3 13/8/3 18/9/3
f 1/10/4 18/11/4 20/12/4
f 1/13/5 20/14/5 17/15/5
f 2/4/6 16/6/6 23/16/6
f 3/17/7 15/18/7 25/19/7
f 4/20/8 19/21/8 27/22/8
f 5/23/9 21/24/9 29/25/9
f 6/26/10 22/27/10 31/28/10
f 2/4/11 23/16/11 26/29/11
f 3/17/12 25/19/12 28/30/12
f 4/20/13 27/22/13 30/31/13
f 5/23/14 29/25/14 32/32/14
f 6/26/15 31/28/15 24/33/15
f 7/34/16 33/35/16 38/36/16
f 8/37/17 34/38/17 40/39/17
f 9/40/18 35/41/18 41/42/18
f 10/43/19 36/44/19 42/45/19
f 11/46/20 37/47/20 39/48/20
f 39/48/21 42/49/21 12/50/21
f 39/48/22 37/47/22 42/49/22
f 37/47/23 10/43/23 42/49/23
f 42/45/24 41/51/24 12/52/24
f 42/45/25 36/44/25 41/51/25
f 36/44/26 9/40/26 41/51/26
f 41/42/27 40/53/27 12/54/27
f 41/42/28 35/41/28 40/53/28
f 35/41/29 8/55/29 40/53/29
f 40/39/30 38/56/30 12/57/30
f 40/39/31 34/38/31 38/56/31
f 34/38/32 7/34/32 38/56/32
f 38/36/33 39/58/33 12/59/33
f 38/36/34 33/35/34 39/58/34
f 33/35/35 11/46/35 39/58/35
f 24/33/36 37/47/36 11/46/36
f 24/33/37 31/28/37 37/47/37
f 31/28/38 10/43/38 37/47/38
f 32/32/39 36/44/39 10/43/39
f 32/32/40 29/25/40 36/44/40
f 29/25/41 9/40/41 36/44/41
f 30/31/42 35/41/42 9/40/42
f 30/31/43 27/22/43 35/41/43
f 27/22/44 8/55/44 35/41/44
f 28/30/45 34/38/45 8/37/45
f 28/30/46 25/19/46 34/38/46
f 25/19/47 7/34/47 34/38/47
f 26/29/48 33/35/48 7/34/48
f 26/29/49 23/16/49 33/35/49
f 23/16/50 11/46/50 33/35/50
f 31/28/51 32/32/51 10/43/51
f 31/28/52 22/27/52 32/32/52
f 22/27/53 5/23/53 32/32/53
f 29/25/54 30/31/54 9/40/54
f 29/25/55 21/24/55 30/31/55
f 21/24/56 4/20/56 30/31/56
f 27/22/57 28/60/57 8/55/57
f 27/22/58 19/21/58 28/60/58
f 19/21/59 3/61/59 28/60/59
f 25/19/60 26/29/60 7/34/60
f 25/19/61 15/18/61 26/29/61
f 15/18/62 2/4/62 26/29/62
f 23/16/63 24/33/63 11/46/63
f 23/16/64 16/6/64 24/33/64
f 16/6/65 6/26/65 24/33/65
f 17/15/66 22/27/66 6/26/66
f 17/15/67 20/14/67 22/27/67
f 20/14/68 5/23/68 22/27/68
f 20/12/69 21/24/69 5/23/69
f 20/12/70 18/11/70 21/24/70
f 18/11/71 4/20/71 21/24/71
f 18/9/72 19/21/72 4/20/72
f 18/9/73 13/8/73 19/21/73
f 13/8/74 3/61/74 19/21/74
f 16/6/75 17/62/75 6/26/75
f 16/6/76 14/5/76 17/62/76
f 14/5/77 1/63/77 17/62/77
f 13/3/78 15/18/78 3/17/78
f 13/3/79 14/2/79 15/18/79
f 14/2/80 2/4/80 15/18/80

41178
model/reiayanami.obj Normal file

File diff suppressed because it is too large Load Diff

31873
model/reiscaled.obj Normal file

File diff suppressed because it is too large Load Diff