three.js TextureLoader(纹理加载附带demo) - 04

2023-11-02

一、什么是纹理加载

纹理一般是指我们常见的在一些第三方程序中创建的图像,如Photoshop或GIMP。我们把这张图片放在立方体上。(我通常称为贴图)。我们需要做的就是创建一个TextureLoader。调用它的load方法,同时传入图像的URL,并将材质的 map 属性设置为该方法的返回值

1.属性介绍

属性 描述
map 我们需要做的就是创建一个TextureLoader。调用它的load方法,同时传入图像的URL,返回值就是map的属性
alphaMap alpha地图是一种灰度纹理,它控制着表面的不透明度(黑色:完全透明;白:完全不透明)。默认为null
color 材料的颜色值,默认为白色
combine 将材质表面颜色与环境贴图相结合,默认为THREE.Multiply,如果选择混合模式,则反射率是用来混合两种颜色的
envMap 环境贴图,默认为null
lightMap 灯光贴图,默认为null
lightMapIntensity 灯光贴图的强度,默认为1
lights 材料是否受到光线影响,默认为false
reflectivity 反射率,表面对环境的影响程度,有效范围在0 - 1之间,默认为1
wireframe 是否以线框模式呈现,默认为false

2.代码示例

//纹理加载 (注意load方法的参数为需要加载的素材路径)
 var texture = new THREE.TextureLoader().load('textures/crate.gif')
 //创建材质
 var material = new THREE.MeshBasicMaterial({
            map:texture
        })

二、纹理加载demo (注意素材位置)

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<style>
    body{
        margin: 0;
        overflow: hidden;
    }
</style>
<script src="../../../../lib/three.js"></script>
<body>
<script>
    var camera ,scene, renderer; //声明相机、场景、渲染器
    var mesh; //声明网格对象
    init();
    animate();
    function init(){
        //生成透视投影相机并加入场景
        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight,0.1,1000);
        camera.position.z = 400;
        scene = new THREE.Scene();

        //纹理加载 (注意load方法的参数为需要加载的素材路径)
        var texture = new THREE.TextureLoader().load('textures/crate.gif')
        //创建立方缓冲几何体
        var geometry = new THREE.BoxBufferGeometry(150,150,150);
        //创建材质

            /*
        alphaMap	alpha地图是一种灰度纹理,它控制着表面的不透明度(黑色:完全透明;白:完全不透明)。默认为null。
        color	材料的颜色值,默认为白色
        combine	将材质表面颜色与环境贴图相结合,默认为THREE.Multiply,如果选择混合模式,则反射率是用来混合两种颜色的
        envMap	环境贴图,默认为null
        lightMap	灯光贴图,默认为null
        lightMapIntensity	灯光贴图的强度,默认为1
        lights	材料是否受到光线影响,默认为false
        map	贴图,默认为null
        reflectivity	反射率,表面对环境的影响程度,有效范围在0 - 1之间,默认为1
        wireframe	是否以线框模式呈现,默认为false
            * */
        var material = new THREE.MeshBasicMaterial({
            map:texture
        })

        //创建立方体对象
        mesh = new THREE.Mesh(geometry,material);
        scene.add(mesh);

        renderer = new THREE.WebGLRenderer({
            alpha:true,
            antialias:true
        })
        //设置渲染器背景颜色
        renderer.setClearColor("skyblue");
        //设置渲染器像素分辨值
        renderer.setPixelRatio(window.devicePixelRatio);
        //设置渲染器区域
        renderer.setSize(window.innerWidth,window.innerHeight);
        document.body.appendChild(renderer.domElement);
    }
    function animate(){
        requestAnimationFrame(animate);
        //做旋转
        mesh.rotation.x += 0.005;
        mesh.rotation.y += 0.01;
        renderer.render(scene,camera)
    }
</script>
</body>
</html>

三、demo效果

1.素材

在这里插入图片描述

2.代码效果

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

three.js TextureLoader(纹理加载附带demo) - 04 的相关文章

  • OrbitControls 和 dat.gui 文本不起作用

    我正在使用 Three js 和 dat gui 以及text财产 另外 我的场景中有 OrbitControls cameraControl new THREE OrbitControls camera cameraControl upd
  • Three.js - 推开然后恢复“鼠标移动”上的元素位置

    大家好 我正在开发一个项目Three js用户可以在哪里hover一个镶嵌的面 每个网格在与不可见球体相交时都应该被推开 并且当它在其区域之外时返回到其原始位置 我在用this http codepen io soulwire pen Ff
  • 在 R 中根据时间序列数据制作 3D 曲面

    我有一个大型数据集 我想从中制作 3D 表面 我希望 x 轴为日期 y 轴为时间 24 小时 z 轴 高度 为我的值 我是 R 初学者 所以越简单越好 http www quantmod com examples chartSeries3d
  • 将 FBX 文件转换为 .gltf 后,模型非常小,为什么?

    问题 将 FBX 文件转换为 gltf 后 模型非常小 为什么 我尝试用以下方法缩放模型frontObject scale set 1000 1000 1000 但我收到以下错误 TypeError Cannot read property
  • 在 matlab 中求 3d 峰的体积

    现在我有一个带有峰值的 3D 散点图 我需要找到其体积 我的数据来自图像 因此 x 和 y 值表示 xy 平面上的像素位置 z 值是每个像素的像素值 这是我的散点图 scatter3 x y z 20 z filled 我试图找到数据峰值的
  • 为什么环境光在此示例中不起作用?

    在以下示例中 环境光不起作用 一切都是黑色的 为什么会发生这种情况 我该如何解决它 如果我放聚光灯 它就可以工作 所以环境光一定有问题 但我遵循了文档 O
  • ThreeJS 我的 GLTF 在主机服务器上加载速度太慢?

    我目前正在创建一个包含 3D Market Place 功能的网站 唉 我在实现这个网站的主要功能时遇到了麻烦 这是网站 阿尔法状态 https www openstring studios com https www openstring
  • Morph 目标为 Three.js

    我正在尝试开始使用变形目标和 Three js 然而 关于这个主题的文档似乎并不多 当我查看源代码时 morphTargetInfluences 似乎是有魔力 这是如何运作的 我该如何使用这个 值为1就是全力吗 如何区分同一模型上的不同变形
  • WebGL VS Canvas 2D 硬件加速

    这些天 我需要在画布上画很多图像 画布尺寸为800x600px 我有很多256x256px的图像 有些更小 在上面绘制 这些小图像将在画布上组成一个完整的图像 我有两种方法来实现这一点 首先 如果我使用canvas 2D上下文 那就是con
  • 如何清除 THREE.JS 场景

    我正在尝试找到清除场景中所有对象而不破坏场景本身的方法 我知道命名对象是一种方法 然后当我们想要删除该对象时 我们只需通过它的名称 获取 它即可 但是 我想找到一种快速方法来清除场景中的所有对象 无论它们的名称如何 有简单的方法吗 谢谢 你
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • 使用 WebGL 的 iOS PhoneGap 应用

    PhoneGap 应用程序的 WebView 是哪个 是 Safari 移动版还是桌面版 是否可以在 PhoneGap 应用程序中使用 WebGL 如果没有 他们可以尝试将应用程序提交到 Apple Store 和 Android Stor
  • 在 vanilla wegl 中向变换立方体添加定向光

    如何在 webGL 中向变换立方体添加方向光 我知道它需要法线 我已将它们添加到代码片段中 我已将它们注释掉 它还需要在顶点着色器中进行一些数学运算 不幸的是 当我取消注释时 此代码不起作用 attribute vec4 coords un
  • Physijs加载模型三.js碰撞不起作用

    当我使用 JSONLoader 加载模型 地图 时 出现冲突问题 如果我使用 BoxMesh 加载 它可以工作 但几何碰撞就像一个立方体 而我的模型不是立方体 模型的中间是空的 我将另一个对象 立方体 放在地图的顶部 该对象停在该地图的顶部
  • 运动结构,根据 2D 图像点对应关系重建 3D 点云

    Use case 物体绕其中心以不同的速度旋转 固定摄像机正在观察物体 给定 2D 图像点对应关系重建 3D 点云 当物体旋转时 相机可以看到它的不同部分 从而检测到不同的点和对应关系 Scene A N 张图片b N 1 图像对C N 1
  • 将 2:1 等距柱状全景图转换为立方体贴图

    我目前正在为网站开发一个简单的 3D 全景查看器 出于移动性能的原因 我使用 Three jsCSS 3 渲染器 https github com mrdoob three js blob master examples css3d pan
  • Three.js:相机绕球体飞行?

    在 Three js 使用 JavaScript WebGL 中 如何创建一个以固定高度 固定前进速度和相对于球体的固定方向围绕球体飞行的相机 用户只能向左转向和正确的 想象一架飞机在一根看不见的绳子上飞向地球的中心 在地面附近飞行并且总是
  • C++ 从一组点进行平面插值

    我正在使用 PCL 点云 库用 C 进行编程 我的问题是 计算某些点的方差 但仅相对于平面的垂直轴 我会解释一下自己 所以我正在做的是将点云按表面平滑度划分为多个片段 区域生长分割 http pointclouds org document
  • 三、多材质已被删除。使用数组代替

    我创建了建筑物的草图模型并将其导出到 dae和纹理文件 我想使用它在浏览器中显示它three js https github com mrdoob three js 但我收到错误THREE MultiMaterial has been re
  • Three.js使用framebuffer作为纹理

    我在 Three js 中使用 canvas 元素中的图像作为纹理 使用 JavaScript 在画布上执行图像操作 然后在纹理上调用 needUpdate 这可行 但速度相当慢 我想在片段着色器中执行图像计算 我发现了很多例子almost

随机推荐

  • VS编写简单的C\C++程序步骤

    VS编写简单的C C 程序步骤 一共分为两个模块 第一个模块新建项目 具体如图 1 选择文件 gt 已安装 gt Visual C gt 空项目 gt 修改项目名 gt 修改项目存储位置 gt 确定 第2个模块 新建源程序文件 具体流程如下
  • ElementUI按需引入各种组件

    ElementUI按需引入各种组件 一 首先按需引入前奏 安装element ui npm i element ui S 安装按需引入必要插件 npm install babel plugin component D 修改 babelrc
  • linux下如何安装python以及一些注意事项

    linux下如何安装python 事先需找到python的下载路径 自己下载下来或者通过wget下载下来 官网包下载路径 https www python org downloads 1 安装python3 6 13 wget https
  • Spring系列之primary可以解决什么问题?

    存在的问题以及解决方案 直接上案例 通过案例来看技术是如何使用的 package com javacode2018 lesson001 demo8 public class NormalBean public interface IServ
  • Python基础知识之4

    Python基础知识之4 函数与库 所谓函数 就是把具有独立功能的代码块组织为一个小模块 在需要的时候可以反复调用 函数分为编译器自带的函数 内建 和用户自己创建的函数 自定义函数 内建函数是编译器开发者已经定义好的函数 用户可以直接使用
  • Sharding-JDBC(六)5.1.0版本,实现按月分表、自动建表、自动刷新节点

    目录 1 Maven 依赖 2 创建表结构 3 yml 配置 4 TimeShardingAlgorithm java 分片算法类 5 ShardingAlgorithmTool java 分片工具类 6 ShardingTablesLoa
  • Home_istoreOS

    1 重置网络 修改lan口 vi etc config network 修改LAN口为 192 168 10 100 修改root密码 原始密码password2 修改为旁路由模式 只需要修改网关为 192 168 10 1 不需要DHCP
  • 解决安装依赖时报错:npm ERR! code ERESOLVE

    系列文章目录 文章目录 系列文章目录 前言 一 错误原因 二 解决方法 三 注意事项 总结 前言 在使用 npm 安装项目依赖时 有时会遇到错误信息 npm ERR code ERESOLVE 该错误通常发生在依赖版本冲突或者依赖解析问题时
  • git解决 error: you need to resolve your current index first

    问题 执行切换代码分支 git checkout featrue 2019 06 24 报错如下 error you need to resolve your current index first 执行git pull代码时报错 Pull
  • styled-components:一本通

    初体验 styled方法 将React组件包装成Styled组件 的三种情况 tagged template literal interpolations 插值表达式 mixin StyledComponent相关特性 extend 继承
  • 计算机系统实验之datalab

    datalab实验是CSAPP中关于整数和浮点数的位运算的实验 对于我们理解位运算和整数 浮点数的位级表示有着很好的帮助 实验目的 修改bits c的C语言代码 使其通过所有在不违反任何编码准则的情况下 在btest中进行测试 进一步熟悉整
  • Java代码中验证IP地址是否可访问【Linux和windows环境下】

    Java代码中验证IP地址是否可访问 Linux和windows环境下 我的需求场景是尝试连接数据源 数据库地址有不同网络环境下的地址 生产 内网 局域网等 所以在连接数据源之前判断一下url中的ip是否可访问 然后决定是否执行下一步操作
  • 解决Qt项目构建或部署时出现的Error while building/deploying project的问题

    解决Qt项目构建或部署时出现的Error while building deploying project的问题 在使用Qt开发项目时 有时会在构建或部署时遇到一些问题 其中最常见的就是Error while building deploy
  • 使用SimPY进行离散事件仿真

    使用SimPY进行离散事件仿真 SimPY是一个Python下的第三方库 可以方便的进行离散事件的仿真 仿真速度比较快 下面记录一下我的一点心得 不保证完全正确 供参考 安装 pip install U simpy 学习资源 可爱的PYTH
  • mysql检查约束_MySQL数据库通过sql语句添加约束和查看约束

    本文主要向大家介绍了MySQL数据库通过sql语句添加约束和查看约束 通过具体的内容向大家展现 希望对大家学习MySQL数据库有所帮助 一 添加约束 1 添加唯一约束 alter table student add constraint u
  • Docker实操6——配置好的强化学习Dockerfile

    自定义专属的强化环境 环境概述 一 文件内容 1 1 sh文件 1 2 换源的txt文件 1 3 测试环境的py文件 终 完整的Dockerfile 小坑 环境概述 基本信息 具体版本 系统 Ubuntu 18 04 LTS 用户 密码 p
  • Vue响应式数据的原理

    在 vue2 的响应式中 存在着添加属性 删除属性 以及通过下标修改数组 但页面不会自动更新的问题 而这些问题在 vue3 中都得以解决 vue3 采用了 proxy 代理 用于拦截对象中任意属性的变化 包括 属性的读写 属性的添加 属性的
  • C/C++使用strcpy函数报错:“XXX处有未经处理的异常:0xC0000005:写入位置0x00000000时发生访问冲突”

    strcpy是一种C语言的标准库函数 它的作用是把含有 0 结束符的字符串复制到另一个地址空间 返回值的类型为char 其原型声明 char strcpy char dest const char src 但使用strcpy函数时我们得注意
  • mobaxterm免费版使用的一个坑记录

    在没有购买mobaxtem专业版的情况下 最多可以创建14个会话 如果超过14个会话后 你对以前创建的会话进行修改 就会修改无效 还是要仔细阅读红色提示 否则修改后 按OK 是可以正常OK的 没有任何的报错 但是保存的信息依然是以前的 这是
  • three.js TextureLoader(纹理加载附带demo) - 04

    文章目录 一 什么是纹理加载 1 属性介绍 2 代码示例 二 纹理加载demo 注意素材位置 三 demo效果 1 素材 2 代码效果 一 什么是纹理加载 纹理一般是指我们常见的在一些第三方程序中创建的图像 如Photoshop或GIMP