React+three实现三维城市建筑生成器代码

代码语言:html

所属分类:三维

代码描述:React+three实现三维城市建筑生成器代码,可修改参数生成各种城市效果。

代码标签: React three 三维 城市 建筑 生成器 代码

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">

  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
  
  
  
<style>
* {
	border: 0;
	box-sizing: border-box;
	margin: 0;
	padding: 0;
}

canvas {
	display: block;
}
</style>


  
  
</head>

<body translate="no">
  <div id="root"></div>
  
    <script type="module">
import React, { StrictMode, useEffect, useEffectEvent, useMemo, useReducer, useRef } from "https://esm.sh/react";
import { createRoot } from "https://esm.sh/react-dom/client";
import * as THREE from "https://esm.sh/three";
import { OrbitControls } from "https://esm.sh/three/addons/controls/OrbitControls.js";
import { GUI } from "https://esm.sh/dat.gui";
createRoot(document.getElementById("root")).render(React.createElement(StrictMode, null,
    React.createElement(VoxelCity, null)));
const DEFAULT_CITY_CONFIG = {
    seed: 77345,
    daylight: 12,
    gridChaos: 0.25,
    commercialDensity: 0.65,
    residentialDensity: 0.7,
    blocks: 16,
    lotsPerBlock: 3,
    lotSize: 6,
    lotMargin: 2,
    streetWidth: 5,
    padOverhang: 1,
    padThickness: 0.5,
    maxHeight: 32,
    minBuildingHeight: 3,
    heightVariance: 0.6,
    setbackFrequency: 0.55,
    vacantLotChance: 0.1,
    minResidentialScale: 3,
    residentialHeightFactor: 0.3,
    windowDensity: 0.85,
    windowLitChance: 0.25,
    windowFloorHeight: 2,
    treeMin: 3,
    treeSpread: 5,
    neighborhoodPaletteSync: true
};
const DISTRICT_PALETTES = [
    // steel & slate
    [
        "hsl(220, 25%, 90%)",
        "hsl(220, 25%, 60%)",
        "hsl(220, 25%, 45%)",
        "hsl(220, 25%, 30%)"
    ],
    // brick & sand
    [
        "hsl(25, 55%, 85%)",
        "hsl(25, 55%, 60%)",
        "hsl(25, 55%, 50%)",
        "hsl(25, 55%, 35%)"
    ],
    // verdigris
    [
        "hsl(130, 25%, 90%)",
        "hsl(130, 25%, 70%)",
        "hsl(130, 25%, 40%)",
        "hsl(130, 25%, 25%)"
    ],
    // dusk violet
    [
        "hsl(260, 30%, 90%)",
        "hsl(260, 30%, 65%)",
        "hsl(260, 30%, 45%)",
        "hsl(260, 30%, 30%)"
    ],
    // limestone
    [
        "hsl(30, 20%, 90%)",
        "hsl(30, 20%, 70%)",
        "hsl(30, 20%, 50%)",
        "hsl(30, 20%, 30%)"
    ]
];
const PARK_GREEN = new THREE.Color("hsl(105, 30%, 40%)");
const TREE_GREEN = new THREE.Color("hsl(105, 30%, 30%)");
const SIDEWALK = new THREE.Color("hsl(60, 5%, 60%)");
const AMBIENT_DAY = new THREE.Color("hsl(210, 40%, 75%)");
const AMBIENT_NIGHT = new THREE.Color("hsl(235, 55%, 22%)");
const SKY_DAY = new THREE.Color("hsl(200, 70%, 70%)");
const SKY_DUS.........完整代码请登录后点击上方下载按钮下载查看

网友评论0