three实现三维空灵模型几何体生成旋转效果代码

代码语言:html

所属分类:三维

代码描述:three实现三维空灵模型几何体生成旋转效果代码

代码标签: three 三维 空灵 模型 几何体 生成 旋转

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

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

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

 
 
<style>
body
{
       
margin: 0;
       
overflow: hidden;
       
font-family: Avenir, Montserrat, Corbel, "URW Gothic", source-sans-pro,
                sans-serif
;
       
font-weight: 900;
}

canvas
{
       
display: block;
}

#container {
       
position: fixed;
       
width: 100%;
       
height: 100%;
       
background: #0a192f;
}

#controls {
       
position: absolute;
       
bottom: 20px;
       
left: 50%;
       
transform: translateX(-50%);
       
display: flex;
       
gap: 20px;
       
align-items: center;
       
background: rgba(0, 0, 0, 0.3);
       
padding: 15px 25px;
       
border-radius: 8px;
       
backdrop-filter: blur(5px);
}

.button {
       
padding: 10px 20px;
       
font-family: inherit;
       
font-size: 14px;
       
color: white;
       
background: rgba(255, 255, 255, 0.1);
       
border: 1px solid rgba(255, 255, 255, 0.2);
       
border-radius: 4px;
       
cursor: pointer;
       
transition: all 0.3s ease;
}

.button:hover {
       
background: rgba(255, 255, 255, 0.2);
}

.button:disabled {
       
opacity: 0.5;
       
cursor: not-allowed;
}

.checkbox-wrapper {
       
display: flex;
       
align-items: center;
       
gap: 8px;
       
color: white;
       
font-size: 14px;
}

input
[type="checkbox"] {
       
cursor: pointer;
       
width: 16px;
       
height: 16px;
}

#title {
       
color: white;
       
top: 10px;
       
position: absolute;
       
width: 100%;
       
text-align: center;
       
user-select: none;
       
pointer-events: none;
       
font-size: 48pt;
       
color: rgba(255, 165, 0, 0.4);
       
font-weight: 900;
       
letter-spacing: 2px;
       
color: transparent;
       
text-shadow: 0 0 10px black;
       
background: linear-gradient(
                hsla
(39, 100%, 80%, 0.8),
                hsla
(39, 100%, 80%, 0.8)
       
);
       
-webkit-background-clip: text;
       
background-clip: text;
}


// Add this to the style section
.button-group {
   
display: flex;
   
gap: 8px;
   
align-items: center;
}
.name {
       
position: absolute;
       
z-index: 10;
       
bottom: 10px;
       
right: 10px;
       
font-family: sans-serif;
       
color: white;
}
</style>


 
 
</head>

<body translate="no">
 
<div id="container"></div>
       
<div id="title">Ethereal Rotations</div>
       
<div id="subtitle">Each view creates a unique perspective</div>
       
<div id="controls">
   
<button id="generateButton" class="button">Generate New Shape</button>
   
<div class="button-group">
       
<div class="checkbox-wrapper">
           
<input type="checkbox" checked id="surfaceToggle">
           
<label for="surfaceToggle">Surface</label>
       
</div>
       
<div class="checkbox-wrapper">
           
<input type="checkbox"id="realSurfaceToggle" />
           
<label for="realSurfaceToggle">Real Surface</label>
       
</div>
   
</div>
   
<button id="downloadButton" class="button">Download View as SVG</button>
</div>


   
<script type="importmap">
 
{
   
"imports": {
     
"three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/164/three.module.js",
     
"three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
   
}
 
}
</script>
     
<script type="module">
import * as THREE from "three";
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
import { SVGRenderer } from "three/addons/renderers/SVGRenderer.js";
let scene, camera, renderer, controls;
let pathLines = [];
let surfaces = [];
let isBuilding = false;
let buildIndex = 0;
let basePath = [];
let hue;
let generateButton, surfaceToggle, downloadButton;

// Add these variables to the top of the script
let lights = [];
let realSurfaceToggle;
let isRealSurface = false;

function init() {
  scene = new THREE.Scene();
  camera = new THREE.PerspectiveCamera(
  75,
  window.innerWidth / window.innerHeight,
  0.1,
  1000);

  camera.position.set(5, 3, 5);
  renderer = new THREE.WebGLRenderer({
    antialias: true });

  renderer.setSize(window.innerWidth, window.innerHeight);
  renderer.setClearColor(0x0a192f);
  document.getElementById("container").appendChild(renderer.domElement);
  controls = new OrbitControl.........完整代码请登录后点击上方下载按钮下载查看

网友评论0