import {readFileSync,writeFileSync} from 'node:fs'; import {createTerrainGeometry} from '../src/scene/terrainGeometry.ts'; import {applySummitTerrain} from '../src/scene/summitTerrain.ts'; import {structurePosition} from '../src/scene/structures.ts'; import {SUMMIT_TERRAIN} from '../src/constants/summitTerrain.ts'; import {SUMMIT_TRAILS} from '../src/constants/summitTrails.ts'; const meta=JSON.parse(readFileSync('public/terrain/gwanaksan.json','utf8'));const b=readFileSync('public/terrain/gwanaksan.f32'); const g=createTerrainGeometry(meta,new Float32Array(b.buffer,b.byteOffset,b.byteLength/4),true);applySummitTerrain(g,meta); const start=structurePosition(SUMMIT_TERRAIN.start.latitude,SUMMIT_TERRAIN.start.longitude,meta.origin),p=g.getAttribute('position'),idx=g.getIndex(); const vertices=[],faces=[],indices=new Map(); for(let i=0;i=-42&&x<=32&&z>=-75&&z<=30){indices.set(i,vertices.length);vertices.push([x,-z,p.getY(i)+meta.observerSurfaceElevation+(p.getX(i)**2+p.getZ(i)**2)/(2*6371008.8)]);}} for(let i=0;iindices.has(j)))faces.push(tri.map(j=>indices.get(j)));} writeFileSync('assets/summit/blender-plateau-study/context.json',JSON.stringify({vertices,faces,boundary:SUMMIT_TRAILS.rockPolygon,start:SUMMIT_TERRAIN.start}));console.log({vertices:vertices.length,faces:faces.length});