ThreeJS-纹理(十)

关键代码:

 const textureLoader = new THREE.TextureLoader();

    //纹理加载器加载图片

    const docColorLoader = textureLoader.load('static/1.webp')

    // let color = new THREE.Color(Math.random(), Math.random(), Math.random());

    const cubeMaterial = new THREE.MeshBasicMaterial({

        color: 0xffff00,

        transparent: true,

        opacity: 0.5,

        map: docColorLoader

      });

完整代码:

<template>

  <div id="three_div"></div>

</template>

  <script>

import * as THREE from "three";

import { OrbitControls } from "three/examples/jsm/controls/OrbitControls";

export default {

  name: "HOME",

  components: {

    // vueQr,

    // glHome,

  },

  data() {

    return {};

  },

  mounted() {

    //使用控制器控制3D拖动旋转OrbitControls

    //控制3D物体移动

    //1.创建场景

    const scene = new THREE.Scene();

    console.log(scene);

    //2.创建相机

    const camera = new THREE.PerspectiveCamera(

      75,

      window.innerWidth / window.innerHeight,

      0.1,

      1000

    );

    //设置相机位置

    camera.position.set(0, 0, 10);

    //将相机添加到场景

    scene.add(camera);

    //添加物体

    //创建几何体

    const cubeGeometry = new THREE.BoxBufferGeometry(2, 2, 2);

    //纹理加载器

    const textureLoader = new THREE.TextureLoader();

    //纹理加载器加载图片

    const docColorLoader = textureLoader.load('static/1.webp')

    // let color = new THREE.Color(Math.random(), Math.random(), Math.random());

    const cubeMaterial = new THREE.MeshBasicMaterial({

        color: 0xffff00,

        transparent: true,

        opacity: 0.5,

        map: docColorLoader

      });

      //根据几何体和材质创建物体

      const mesh = new THREE.Mesh(cubeGeometry, cubeMaterial);

      //将物体加入到场景

      scene.add(mesh);

    //添加坐标轴辅助器

    const axesHepler = new THREE.AxesHelper(5);

    scene.add(axesHepler);

    //初始化渲染器

    const render = new THREE.WebGLRenderer();

    //设置渲染器的尺寸

    render.setSize(window.innerWidth, window.innerHeight);

    //使用渲染器,通过相机将场景渲染进来

    //创建轨道控制器,可以拖动,控制的是摄像头

    const controls = new OrbitControls(camera, render.domElement);

    //设置控制阻尼,让控制器有更真实的效果

    controls.enableDamping = true;

    //将webgl渲染的canvas内容添加到body上

    document.getElementById("three_div").appendChild(render.domElement);

    //渲染下一帧的时候就会调用回调函数

    let renderFun = () => {

      //更新阻尼数据

      controls.update();

      //需要重新绘制canvas画布

      render.render(scene, camera);

      //监听屏幕刷新(60HZ,120HZ),每次刷新触发一次requestAnimationFrame回调函数

      //但是requestAnimationFrame的回调函数注册生命只有一次,因此需要循环注册,才能达到一直调用的效果

      window.requestAnimationFrame(renderFun);

    };

    // window.requestAnimationFrame(renderFun);

    renderFun();

    //画布全屏

    window.addEventListener("dblclick", () => {

      if (document.fullscreenElement) {

        document.exitFullscreen();

      } else {

        //document.documentElement.requestFullscreen();

        render.domElement.requestFullscreen();

      }

    });

    //监听画面变化,更新渲染画面,(自适应的大小)

    window.addEventListener("resize", () => {

      //更新摄像机的宽高比

      camera.aspect = window.innerWidth / window.innerHeight;

      //更新摄像机的投影矩阵

      camera.updateProjectionMatrix();

      //更新渲染器宽度和高度

      render.setSize(window.innerWidth, window.innerHeight);

      //设置渲染器的像素比

      render.setPixelRatio(window.devicePixelRatio);

      console.log("画面变化了");

    });

  },

  methods: {

    paush(animate) {

      animate.pause();

    },

  },

};

</script>

<style scoped lang="scss">

</style>

效果图:

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/4723.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

法规标准-GB/T 39901标准解读(2021版)

GB/T 39901是做什么的&#xff1f; GB/T 39901全名为乘用车自动紧急制动系统(AEBS)性能要求及试验方法&#xff0c;其中主要对AEBS的功能要求、性能要求及测试要求进行介绍 一般要求 1.安装有自动紧急制动系统的车辆应安装符合GB 21670-2008要求的防抱制动系统 2.AEBS的电磁…

近世代数 笔记和题型连载 第七章(阿贝尔群和循环群)

文章目录基础概念1.阿贝尔群2.循环群3.有限循环群4.元素的阶5.无限循环群相关题型1.判断一个代数系统的代数结构2.判定一个群是否是循环群3.判定一个群是否是循环群4.循环群的生成元有关问题5.判定元素的阶6.判定元素的阶7.判定元素的阶8.求给定循环群的所有子群9.求给定循环群…

七. MySQL 其它优化相关

目录一. 数据库问题排查流程二. 表连接驱动表与被驱动表Nested Loop Join 与小表驱动大表JoinBuffer 连接缓冲区Index Nested-Loop Join 索引嵌套循环连接Batched Key Access join 批量的key访问连接Block Nested-Loop Join 缓存块嵌套循环连接三. 半连接in 与 existssemi-join…

Vue 04 - Vue模板语法

目录 介绍 Mustache 插值语法 Attribute指令语法 代码演示 运行效果 介绍 Vue.js 使用了基于 HTML 的模板语法&#xff0c;允许开发者声明式地将 DOM 绑定至底层 Vue 实例的数据。所有 Vue.js 的模板都是合法的 HTML&#xff0c;所以能被遵循规范的浏览器和 HTML 解析器解…

PCB模块化设计10——PCI-E高速PCB布局布线设计规范

目录PCB模块化设计10——PCI-E高速PCB布局布线设计规范1、PCI-E管脚定义2、PCI-E叠层和参考平面3、 PCB设计指南1、阻抗要求2、线宽线距3、长度匹配4、走线弯曲角度5、测试点、过孔、焊盘6、AC去耦电容放置方法7、金手指和连接器的注意事项8、其他的注意事项PCB模块化设计10——…

STM32学习笔记(一)基础知识

文章目录一、什么是单片机&#xff1f;二、STM系列单片机命名规则三、STM32F103C8T6单片机简介四、标准库与HAL库区别五、通用输入输出端口GPIO六、复位和时钟控制&#xff08;RCC&#xff09;七、时钟八、中断和事件九、定时器一、什么是单片机&#xff1f; 单片机和PC电脑相比…

SpringBoot的多环境配置详解(上)——文件配置项版

SpringBoot不同环境加载不同配置文件 - resource & profile 文章目录SpringBoot不同环境加载不同配置文件 - resource & profile1、 profile多配置文件2、 profile单配置文件3、maven的profiles策略4、spring.profiles.activeprofiles.active用法1、 profile多配置文件…

健身房训练计划—背部

杠铃屈腿硬拉&#xff08;臀&#xff0c;大腿&#xff09; 动作要领&#xff1a; 1&#xff0c;站距和肩等宽&#xff0c;脚尖微微外八&#xff0c;拉的时候把杆贴近小腿&#xff0c;身体成45度&#xff08;头背腰成45度&#xff09;。 2&#xff0c;发力的时候腿用力向上蹬&am…

IOC 相关内容

IOC 相关内容4&#xff0c;IOC相关内容4.1 bean基础配置4.1.1 bean基础配置(id与class)4.1.2 bean的name属性步骤1&#xff1a;配置别名步骤2:根据名称容器中获取bean对象步骤3:运行程序4.1.3 bean作用范围scope配置4.1.3.1 验证IOC容器中对象是否为单例验证思路具体实现4.1.3.…

三个月从功能测试进阶到自动化测试,涨薪5k?你在想啥呢?

一、自动化测试要学多久能学会&#xff1f; 兄弟&#xff0c;老实说如果你现在上班&#xff0c;之前主要在做功能测试&#xff0c;或者编程基础比较弱的话&#xff0c;三个月够呛。 如果你是脱产学习&#xff0c;每天能保持6&#xff5e;8小时学习时间的话&#xff0c;可以。…

【综】A review of bicycle-sharing service planning problems

A review of bicycle-sharing service planning problems 共享单车服务规划问题综述 article{ZHOU2022608, title {Review of bike-sharing system studies using bibliometrics method}, journal {Journal of Traffic and Transportation Engineering (English Edition)}, v…

12.0 自定义SystemUI下拉状态栏和通知栏视图(十九)之悬浮通知布局

1.前言 在进行12.0的系统rom产品定制化开发中,在12.0中针对systemui下拉状态栏和通知栏的定制UI的工作开发中,原生系统的下拉状态栏和通知栏的视图UI在产品开发中会不太满足功能, 所以根据产品需要来自定义SystemUI的下拉状态栏和通知栏功能,首选实现的就是下拉通知栏左滑删…

是面试官放水,还是企业实在是缺人?这都没挂,字节原来这么容易进...

“字节是大企业&#xff0c;是不是很难进去啊&#xff1f;”“在字节做软件测试&#xff0c;能得到很好的发展吗&#xff1f;一进去就有9.5K&#xff0c;其实也没有想的那么难”直到现在&#xff0c;心情都还是无比激动&#xff01; 本人211非科班&#xff0c;之前在字节和腾讯…

基于springboot学生信息管理系统

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

JAVA ---数据类型

&#xff08;一&#xff09;Java的标识符与关键字 现实世界&#xff0c;所有东西都有属于自己的名字&#xff0c;从而方便分类和区别其他事物。在程序中&#xff0c;常常用一个记号对变量、数组、方法和类等进行标识&#xff0c;这个记号就叫标识符&#xff08;名字&#xff09…

华为OD机试用java实现 -【最优调度策略】

最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:最优调度策略 题目 在通信系…

JavaScript核心高级内容复习3

文章目录对象的创建模式继承模式详细介绍Object构造函数模式对象字面量工厂模式自定义构造函数模式构造函数原型的组合模式继承模式--原型链继承继承模式--借用构造函数继承继承模式--组合继承对象的创建模式 Object构造函数模式var obj {}; obj.name Tom obj.setName func…

【软件设计师04】计算机网络

计算机网络 1. OSI/RM七层模型 层次名称主要功能主要设备及协议7应用层实现具体的应用功能POP3、FTP、HTTP、Telnet、SMTP、DHCP、TFTP、SNMP、DNS6表示层数据的格式与表达、加密、压缩5会话层建立、管理和终止会话4传输层端到端的连接TCP、UDP3网络层分组传输和路由选择三层…

Matplotlib库入门

Matplotlib库的介绍 什么是Matplotlib库&#xff1f; Matplotlib是一个Python的数据可视化库&#xff0c;用于绘制各种类型的图表&#xff0c;包括线图、散点图、条形图、等高线图、3D图等等。它是一个非常强大和灵活的库&#xff0c;被广泛用于数据科学、机器学习、工程学、…

ARMv8 secure 和 Non-secure模式切换的两种方法:SMC和SCR.NS

文章目录SMC 指令SCR.NSAArch64SMC&#xff08;Secure Monitor Call&#xff09;指令HCR_EL2.TSC &#xff1a;Traps to EL2 of EL1 execution of SMC instructionsSCR_EL3.SMD &#xff1a; Disabling EL3, EL2, and EL1 execution of SMC instructionsSCR_EL3 寄存器AArch32S…