three实现三维地形可调节参数的生成器代码
代码语言:html
所属分类:三维
代码描述:three实现三维地形可调节参数的生成器代码
代码标签: three 三维 地形 可 调节 参数 生成器 代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> * { margin: 0; padding: 0; } canvas { position: fixed; width: 100%; height: 100%; top: 0; left: 0; margin: 0; padding: 0; } #heatMap { position: absolute; top: 0; left: 0; width: 10vw; height: 100%; border: 1px solid black; display: none; } </style> </head> <body translate="no"> <canvas id="heatMap"></canvas> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.3.js"></script> <script type="importmap"> { "imports": { "three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/160/three.module.js", "three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/160/jsm/" } } </script> <script type="module"> "use strict"; import * as THREE from "three"; import { OrbitControls as e } from "three/addons/controls/OrbitControls.js"; import { ImprovedNoise as t } from "three/addons/math/ImprovedNoise.js"; import { OBJExporter as n } from "three/addons/exporters/OBJExporter.js"; import { GUI as o } from "three/addons/libs/lil-gui.module.min.js"; !function () { function a() { y = 1e3, T = 420, M = 450, b = 501, C = 3, R = 4, S = 5; } function i() { h.remove(x), x.material.dispose(), x.geometry.dispose(), r(); } function r() { const e = function (e, n) { const o = e * n; let a = [...Array(o)].map(() => 0),i = new t(),r = 100 * Math.random(),d = 1; for (let t = 0; t < R; t++) { for (let t = 0; t < o; t++) { let n = t % e,o = ~~(t / e); a[t] += Math.abs(i.noise(n / d, o / d, r) * d); } d *= S; } let s = new THREE.Vector3(e / 2, n / 2, 0),l = Math.floor(Math.min(e / 2, n / 2)),c = (Math.floor(Math.max(e / 2, n / 2)), l * T * 2 / y),u = l * M * 2 / y; for (let t = 0; t < o; t++) { let n = t % e,o = ~~(t / e),i = new THREE.Vector3(n, o, 0); var m = Math.abs(i.distanceTo(s)); m >= l - .5 ? a[t] = -11 : m >= c && m < u ? a[t] = 0 : m >= u ? (a[t] = -Math.abs(a[t]), a[t] *= Math.tan((m - u) / l * Math.PI) * C, a[t] < -11 && (a[t] = -11)) : a[t] *= Math.cos(m / c * (Math.PI / 2)) * C; } return a; }(b, b); (g = new.........完整代码请登录后点击上方下载按钮下载查看
网友评论0