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