当前位置: 首页 > news >正文

网站 www ftp功能潍坊做网站哪家好

网站 www ftp功能,潍坊做网站哪家好,校园网站制作,运营公司有哪些效果:旋转的彩色立方体 效果描述: 一个立方体在场景中旋转。立方体的每个面有不同的颜色。使用自定义着色器为立方体添加动态的光影效果。 代码实现 import * as THREE from three; import { OrbitControls } from three/examples/jsm/controls/OrbitC…

效果:旋转的彩色立方体

在这里插入图片描述

效果描述:
  • 一个立方体在场景中旋转。
  • 立方体的每个面有不同的颜色。
  • 使用自定义着色器为立方体添加动态的光影效果。

代码实现

import * as THREE from 'three';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';// 获取容器元素
const box = document.getElementById('box');// 创建场景、相机和渲染器
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(50, box.clientWidth / box.clientHeight, 0.1, 1000);
camera.position.set(5, 5, 5);
camera.lookAt(0, 0, 0);const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(box.clientWidth, box.clientHeight);
box.appendChild(renderer.domElement);// 添加轨道控制器
const controls = new OrbitControls(camera, renderer.domElement);
controls.enableDamping = true;// 创建立方体几何体
const geometry = new THREE.BoxGeometry(2, 2, 2);// 定义着色器 uniforms
const uniforms = {time: { value: 0, type: 'float' }, // 时间变量,用于动态效果color1: { value: new THREE.Color(0xff0000), type: 'vec3' }, // 颜色 1color2: { value: new THREE.Color(0x00ff00), type: 'vec3' }, // 颜色 2color3: { value: new THREE.Color(0x0000ff), type: 'vec3' }  // 颜色 3
};// 创建自定义着色器材质
const material = new THREE.ShaderMaterial({uniforms: uniforms,vertexShader: `varying vec3 vPosition;void main() {vPosition = position;gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);}`,fragmentShader: `uniform float time;uniform vec3 color1;uniform vec3 color2;uniform vec3 color3;varying vec3 vPosition;void main() {// 根据位置和时间的动态颜色vec3 color = mix(color1, color2, sin(vPosition.x + time) * 0.5 + 0.5);color = mix(color, color3, cos(vPosition.y + time) * 0.5 + 0.5);gl_FragColor = vec4(color, 1.0);}`
});// 创建立方体网格并添加到场景中
const cube = new THREE.Mesh(geometry, material);
scene.add(cube);// 添加环境光
const ambientLight = new THREE.AmbientLight(0xffffff, 0.5);
scene.add(ambientLight);// 添加点光源
const pointLight = new THREE.PointLight(0xffffff, 1);
pointLight.position.set(5, 5, 5);
scene.add(pointLight);// 动画循环
function animate() {requestAnimationFrame(animate);// 更新 uniforms 中的时间变量uniforms.time.value += 0.01;// 旋转立方体cube.rotation.x += 0.01;cube.rotation.y += 0.01;// 更新控制器controls.update();// 渲染场景renderer.render(scene, camera);
}animate();// 窗口大小调整事件
window.onresize = () => {renderer.setSize(box.clientWidth, box.clientHeight);camera.aspect = box.clientWidth / box.clientHeight;camera.updateProjectionMatrix();
};

代码说明

  1. 场景和渲染器

    • 创建了一个场景、透视相机和 WebGL 渲染器。
    • 渲染器绑定到 box 容器中。
  2. 立方体几何体

    • 使用 BoxGeometry 创建立方体。
    • 立方体的尺寸为 2x2x2
  3. 自定义着色器材质

    • 使用 ShaderMaterial 创建自定义材质。
    • 顶点着色器将顶点位置传递给片元着色器。
    • 片元着色器根据顶点位置和时间动态混合颜色。
  4. 动画循环

    • animate 函数中,更新 time 变量以实现动态颜色效果。
    • 立方体绕 X 轴和 Y 轴旋转。
  5. 光源

    • 添加环境光和点光源,使立方体看起来更立体。
  6. 窗口大小调整

    • 当窗口大小变化时,更新渲染器和相机的尺寸。

运行效果

  • 你会看到一个旋转的立方体,每个面的颜色会根据时间和位置动态变化。
  • 立方体的旋转和颜色变化是平滑的。

如何扩展

  1. 修改颜色

    • uniforms 中修改 color1color2color3 的值,调整立方体的颜色。
  2. 添加纹理

    • 在片元着色器中使用 texture2D 加载纹理,并结合动态颜色效果。
  3. 调整几何体

    • 将立方体替换为其他几何体(如球体、环面等),观察不同几何体的效果。
  4. 增加交互

    • 通过鼠标或键盘事件动态修改 uniforms 的值,实现交互式效果。

尝试用AI辅助编写代码!

http://www.khdw.cn/news/8069.html

相关文章:

  • 成都网站快照优化公司苏州seo公司
  • dw超链接自己做的网站广州今天刚刚发生的重大新闻
  • 重庆渝网站建设产品推广策略
  • 网站后台上传图片做难吗?百度关键词排名神器
  • 电销做网站项目新乡网络推广外包
  • 做网站接项目拉新项目官方一手平台
  • 台州 网站建设seo1新地址在哪里
  • 做项目的编程网站网站建设开发
  • 邢台123贴吧百度上做优化一年多少钱
  • 做斗图的网站计算机培训短期速成班
  • 黄山网站建设怎么做网站推广软文
  • 境外建设网站贴吧网址收录查询
  • 在线做heatmap的网站软文推广平台排名
  • 内部网站搭建免费游戏推广平台
  • 宁波企业制作网站网络竞价
  • 小说网站采集可以做嘛南京seo网络推广
  • 搜索引擎关键字排名优化北京网站优化服务商
  • 方正悠黑使用网站建设侵权么汕头网站建设方案维护
  • 新余网站建设人员西安做网站公司
  • 发布程序后网站有很多淘特app推广代理
  • 上海网络营销软件seo 优化技术难度大吗
  • 从网上怎么做网站营销全网整合营销推广
  • 游戏网站开发实验报告百度推广引流
  • 高校档案馆网站建设星乐seo网站关键词排名优化
  • 做网站租服务器吗seo技术是什么
  • 企业做网站推广济南seo网站排名关键词优化
  • 武威做网站的公司seo好学吗
  • 阿里云服务器可以做网站互联网广告精准营销
  • 厦门专业做网站的深圳网络推广服务公司
  • 做网站需要绑定电脑ip吗网站建设报价单