three+cannon+vanta实现三维体素生物进化模拟效果代码
代码语言:html
所属分类:三维
代码描述:three+cannon+vanta实现三维体素生物进化模拟效果代码
代码标签: three cannon vanta 三维 体素 生物 进化 模拟
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html>
<html lang="en" >
<head>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" href="//repo.bfw.wiki/bfwrepo/css/all.6.4.0.css">
<style>
.voxel-container {
width: 100%;
height: 400px;
position: relative;
background: #1a202c;
border-radius: 12px;
overflow: hidden;
}
.gene-progress {
transition: width 0.5s ease-in-out;
}
.creature-card {
transition: all 0.3s ease;
transform-style: preserve-3d;
}
.creature-card:hover {
transform: translateY(-5px) scale(1.02);
box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.3);
}
@keyframes pulse {
0% {
opacity: 0.6;
}
50% {
opacity: 1;
}
100% {
opacity: 0.6;
}
}
.pulsing {
animation: pulse 2s infinite;
}
/* Custom scrollbar */
::-webkit-scrollbar {
width: 8px;
height: 8px;
}
::-webkit-scrollbar-track {
background: #2d3748;
}
::-webkit-scrollbar-thumb {
background: #4a5568;
border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
background: #718096;
}
#three-container {
width: 100%;
height: 100%;
}
.stats-badge {
background: rgba(0, 0, 0, 0.5);
backdrop-filter: blur(5px);
border-radius: 4px;
}
</style>
</head>
<body class="bg-gray-900 text-white min-h-screen">
<!-- Background Effect -->
<div id="vanta-bg" class="fixed w-full h-full top-0 left-0 z-0"></div>
<div class="relative z-10 container mx-auto px-4 py-8">
<!-- Header -->
<header class="text-center mb-12">
<h1 class="text-5xl font-bold mb-4 bg-clip-text text-transparent bg-gradient-to-r from-teal-400 to-blue-500">
Voxel Creatures Evolutionary Sim
</h1>
<p class="text-xl text-gray-300 max-w-3xl mx-auto">
Watch voxel creatures evolve with physics-based movement, environmental interactions, and complex behaviors.
</p>
</header>
<!-- Main Simulation Area -->
<div class="grid grid-cols-1 lg:grid-cols-3 gap-8 mb-12">
<!-- Left Panel - Controls -->
<div class="bg-gray-800 bg-opacity-80 rounded-xl p-6 shadow-xl backdrop-blur-sm">
<h2 class="text-2xl font-semibold mb-4 border-b border-gray-700 pb-2 flex items-center">
<i class="fas fa-sliders-h mr-2 text-teal-400"></i>
Simulation Controls
</h2>
<div class="space-y-6">
<div>
<label class="block text-sm font-medium mb-1">Environment Type</label>
<select id="environment-type" class="w-full bg-gray-700 border border-gray-600 rounded-md py-2 px-3 focus:outline-none focus:ring-2 focus:ring-teal-500">
<option value="plains">Plains (balanced)</option>
<option value="ocean">Ocean (swimming focus)</option>
<option value="mountains">Mountains (climbing/strength)</option>
<option value="desert">Desert (heat resistance)</option>
<option value="forest">Forest (camouflage)</option>
<option value="predators">Predators (speed/strength)</option>
</select>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium mb-1">Population Size</label>
<input type="range" id="population-size" min="5" max="30" value="12" class="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-400 mt-1">
<span>5</span>
<span>30</span>
</div>
</div>
<div>
<label class="block text-sm font-medium mb-1">Mutation Rate</label>
<input type="range" id="mutation-rate" min="1" max="10" value="4" class="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-400 mt-1">
<span>1%</span>
<span>10%</span>
</div>
</div>
</div>
<div class="grid grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium mb-1">Food Amount</label>
<input type="range" id="food-amount" min="1" max="10" value="5" class="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-400 mt-1">
<span>Sparse</span>
<span>Abundant</span>
</div>
</div>
<div>
<label class="block text-sm font-medium mb-1">Physics Accuracy</label>
<input type="range" id="physics-accuracy" min="1" max="5" value="3" class="w-full h-2 bg-gray-700 rounded-lg appearance-none cursor-pointer">
<div class="flex justify-between text-xs text-gray-400 mt-1">
<span>Low</span>
<span>High</span>
</div>
</div>
</div>
<div class="flex space-x-3">
<button id="start-btn" class="flex-1 bg-teal-600 hover:bg-teal-500 text-white py-2 px-4 rounded-md font-medium transition flex items-center justify-center">
<i class="fas fa-play mr-2"></i> Start Evolution
</button>
<button id="pause-btn" class="flex-1 bg-gray-600 hover:bg-gray-500 text-white py-2 px-4 rounded-md font-medium transition flex items-center justify-center">
<i class="fas fa-pause mr-2"></i> Pause
</button>
<button id="reset-btn" class="flex-1 bg-red-600 hover:bg-red-500 text-white py-2 px-4 rounded-md font-medium transition flex items-center justify-center">
<i class="fas fa-undo mr-2"></i> Reset
</button>
</div>
<div class="pt-4 border-t border-gray-700">
<h3 class="font-medium mb-2 flex items-center">
<i class="fas fa-info-circle mr-2 text-blue-400"></i>
Current Generation: <span id="generation-counter" class="ml-2 font-bold">0</span>
</h3>
<h3 class="font-medium mb-2 flex items-center">
<i class="fas fa-bolt mr-2 text-yellow-400"></i>
Top Fitness: <span id="fitness-score" class="ml-2 font-bold">0</span>
</h3>
<h3 class="font-medium mb-2 flex items-center">
<i class="fas fa-utensils mr-2 text-green-400"></i>
Food Available: <span id="food-count" class="ml-2 font-bold">0</span>
</h3>
</div>
</div>
</div>
<!-- Center Panel - 3D Viewer -->
<div class="lg:col-span-2 rounded-xl overflow-hidden shadow-xl">
<div class="voxel-container relative" id="three-container">
<div id="stats-overlay" class="absolute z-10 bottom-0 left-0 right-0 p-4 bg-gradient-to-t from-black to-transparent hidden">
<div class="text-white text-sm grid grid-cols-2 gap-2">
<div>Speed: <span class="float-right" id="stat-speed">0</span></div>
<div>Strength: <span class="float-right" id="stat-strength">0</span></div>
<div>Size: <span class="float-right" id="stat-size">0</span></div>
<div>Health: <span class="float-right" id="stat-health">0</span></div>
<div>Energy: <span class="float-right" id="stat-energy">0</span></div>
<div>Age: <span class="float-right" id="stat-age">0</span></div>
</div>
</div>
<div id="loading-overlay" class="absolute inset-0 flex items-center justify-center bg-black bg-opacity-70">
<div class="text-center">
<i class="fas fa-spinner fa-spin text-4xl mb-4 text-teal-400"></i>
<p class="text-xl">Loading physics engine...</p>
</div>
</div>
</div>
<div class="bg-gray-800 bg-opacity-80 p-4 border-t border-gray-700 backdrop-blur-sm">
<div class="flex justify-between items-center">
<div>
<h3 class="font-medium">Selected: <span id="selected-creature" class="font-semibold text-teal-300">None</span></h3>
<div class="flex space-x-2 mt-1">
<span id="creature-age" class="stats-badge text-xs px-2 py-1">Age: 0</span>
<span id="creature-fitness" class="stats-badge text-xs px-2 py-1">Fitness: 0</span>
<span id="creature-generation" class="stats-badge text-xs px-2 py-1">Gen: 0</span>
<span id="creature-species" class="stats-badge text-xs px-2 py-1">Species: New</span>
</div>
</div>
<div class="flex space-x-2">
<button id="breed-btn" class="bg-blue-600 hover:bg-blue-500 text-white py-1 px-3 rounded-md text-sm transition">
<i class="fas fa-dna mr-1"></i> Breed
</button>
<button id="mutate-btn" class="bg-purple-600 hover:bg-purple-500 text-white py-1 px-3 rounded-md text-sm transition">
<i class="fas fa-radiation mr-1"></i> Mutate
</button>
<button id="follow-btn" class="bg-green-600 hover:bg-green-500 text-white py-1 px-3 rounded-md text-sm transition">
<i class="fas fa-eye mr-1"></i> Follow
</button>
</div>
</div>
</div>
</div>
</div>
<!-- Population Grid -->
<div class="bg-gray-800 bg-opacity-80 rounded-xl p-6 shadow-xl backdrop-blur-sm mb-8">
<h2 class="text-2xl font-semibold mb-4 border-b border-gray-700 pb-2 flex items-center">
<i class="fas fa-users mr-2 text-blue-400"></i>
Population <span class="ml-auto text-sm font-normal">(Click to .........完整代码请登录后点击上方下载按钮下载查看
















网友评论0