首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

2D+1D | vivo官网Web 3D应用开发与实战

几种不同模型文件对比: 通过对比我们发现几种模型格式分别适用于不同场景: 1)OBJ模型对于动画支持不是特别友好,手机在做3D展示时需要进行一些模型拆解动画展示。...2)FBX 由于不同引擎解析规范不同,导致不同引擎渲染出效果差别较大 3)GLTF(GLB) 模型格式扩展性较高,ThreeJs、Babylonjs等WebGL渲染引擎支持性较好 4.2 3D...所以我们选择移动相机 即实现方式(1) 去实现3D实体旋转交互。 4.2.4 模型颜色切换 模型格式采用GLB模型(方便后期固化上传),所以每一种颜色对应一个新GLB文件。...压缩步骤: 1、安装gltf-pipeline npm install -g gltf-pipeline 2、转换gltf至glb文件 Converting a glTF to glb gltf-pipeline...-i model.gltf -o model.glb gltf-pipeline -i model.gltf -b 压缩之后,glb文件体积会减少80%左右,所以在加载速度和效果呈现上会比原始GLTF

2.1K40

干货 | 2D+1D | vivo官网Web 3D应用开发与实战

注:图片来自vivo官网前端团队 通过对比我们发现几种模型格式分别适用于不同场景: 1)OBJ模型对于动画支持不是特别友好,手机在做3D展示时需要进行一些模型拆解动画展示。...3D场景中最终反射效果环境光、平行光,漫反射以及镜面反射叠加在一起效果。 点光源指光线从一个点发射出来向着四面八方发射。这种光在我们现实生活中最常被用到。...所以我们选择移动相机 即实现方式(1) 去实现3D实体旋转交互。 4.2.4 模型颜色切换 模型格式采用GLB模型(方便后期固化上传),所以每一种颜色对应一个新GLB文件。...压缩步骤: 1、安装gltf-pipeline npm install -g gltf-pipeline 2、转换gltf至glb文件 Converting a glTF to glb gltf-pipeline...-i model.gltf -o model.glb gltf-pipeline -i model.gltf -b 压缩之后,glb文件体积会减少80%左右,所以在加载速度和效果呈现上会比原始GLTF

2.1K40
您找到你想要的搜索结果了吗?
是的
没有找到

如何在页面极速渲染3D模型

通过 glTF 配合 Draco 压缩方式,可以在视觉效果近乎一致情况下,让3D模型文件成倍缩小。下面具体介绍 glTF 格式及 Draco 压缩工具。 1....glTF 导出格式有两种后缀格式可供选择:.gltf 和 .glb: - .gltf 文件导出时一般会输出两种文件类型,一 .bin 文件,以二进制流方式存储顶点坐标、顶点法线坐标和贴图纹理坐标、贴图信息等模型基本数据信息...;二 .gltf 文件,本质 json 文件,记录对bin文件中模型顶点基本数据索引、材质索引等信息,方便编辑,可读性较好; - .glb 文件格式只导出一个 .glb 文件,将所有数据都输出为二进制流...使用方法如下: #全局安装npm install -g gltf-pipeline#压缩glb文件 -b表示输出glb格式,-d表示压缩gltf-pipeline -i model.glb.../basisu xxx.png -linear -global_sel_pal -no_hybrid_sel_cb 生成 .basis 文件需要在程序中通过转码器转成设备压缩纹理格式,例如在ThreeJS

8.5K32

WebGL加载本地模型

前言 大部分webgl框架,比如threejs和babylon等,都可以加载obj和gltf模型。...加载本地模型思路这样: 既然引擎可以通过url机制,加载模型。 那么如果有一种机制,可以把本地文件及其关联资源(比如贴图)等转换成url形式,就可以进行使用loader进行访问了。...(object); 其中object表示Blob或者File对象。...返回一个url地址对象。 加载本地模型 有了上述基础知识,大致思路就出来了: 首先 加载本地文件,读取file对象(可能多个File对象,因为一个模型可能包括多个资源文件)。...找出主要文件(gltf glb等格式文件,主文件通过 createObjectURL方法转换成url对象 找出其他文件,通过createObjectURL方法转换成url对象 加载主文件url,并在加载过程中

1.8K30

如何使用 react 和 three.js 在网站渲染自己3D模型

3D 建模经验,你只需要做快速自拍,然后等待程序根据你肖像自动生成自定义 3D 形象。...选择体型 上传你自己照片 定制您外观 下载您模型 在 React 中渲染模型 为了在 react 程序中渲染这个模型,我们将使用 react-three-fiber** 一个**Threejs...文件) 添加到 public文件夹下,使用 gltfjsx 生成文件将其放入 src 下 components 文件夹 import React, { Suspense } from 'react...创建一个新 blender 项目 删除所有对象中物体 将 glb 文件导入 blender 选择您模型,然后单击 Import glTF 2.0 将模型转换为 fbx 格式 在将添加任何动画添加到我们模型之前...将动画模型导入 blender 将动画模型导出为 glb 在 react 中渲染动画模型 在 public 文件夹下替换这个 model.glb 文件使用动画模型 ,然后在 src/Model.js

8.9K10

WebGL压缩纹理实践

0x01 本文将讲述压缩纹理在实际项目中使用案例。最近一个项目这样:项目由于涉及到建筑物特别多,大概有近40栋建筑,每一栋建筑物,又有10层楼,每层楼里面又有很多设备。...这些图片本事压缩图片,基于压缩算法,对于文件进行了压缩,减小了文件大小,这对于网络上大量图片传输有利。...所以从性能角度来说也提高了访问纹理速度。 压缩文里有很多格式,比如DDS,KTX等。严格来说,DDS和kTX一种容器不是格式,压缩纹理格式有多种。...压缩命令大致: gltfpack -i scene.gltf -o scene.glb --tc 其中tc对贴图进行压缩,原文如下:gltfpack can also compress textures...,以threejs为例,加载ktx2需要指定KTX2Loader,KTX2Loader需要指定js文件“basis_transcoder”,所以需要指定basis_transcoder.js和basis_transcoder.wasm

1.9K10

3D模型+BI分析,打造全新交互式3D可视化大屏开发方案

背景介绍 在数字经济建设和数字化转型浪潮中,数据可视化大屏已成为各行各业必备工具。然而,传统数据大屏往往以图表和指标为主,无法真实地反映复杂物理世界和数据关系。...功能介绍 3D模型文件,通过3D Max、Blender等3D建模软件进行模型设计,然后导出为 glb 文件,该文件将用于3D场景搭建。...环境准备 嵌入式BI仪表板设计器 使用步骤 1)准备 glb 模型文件 根据业务需要,在3D建模软件中完成模型设计,并导出为 glb 格式模型文件。...将模型作为文件上传到,在【新建】菜单中可以直接上传30M以内 glb 文件; 直接引用一个URL地址,大于30M模型我们推荐先上传到CND中以提升模型打开速度。...无论数据可视化还是数据分析,这个3D可视化大屏为我们提供了一个强大灵活工具,为数字化转型带来了巨大推动力。

25810

三维模型在线展示解决方案

使用户能够拥有一定额度去试用他们服务,如果长期使用服务用户或者对单个模型文件有比较大需求,就需要开通会员来提升权益,定价页面:sketchfab、51建模网;乐述云享个人版免费对外提供,不过需要根据创作等级来享受不同权益...ThreeJS程序设计,有一定开发基础用户,可以实现更高级别的DIY功能。...第1步:3D建模如果您已有现成产品3D模型,可省略此步骤,目前平台支持上传格式为GLB,你可以使用Blender、3ds Max、Maya等软件导出相关格式文件。...富文本编辑器上传模型文件在富文本编辑器中,直接通过工具栏上传模型文件,完成上传后,插入正文即可。...Markdown编辑器程序开发使用Markdown编辑器需要自己编写ThreeJS代码,以下一个在线展示案例,你只需要更改glbUrl网络地址就可以了,这代表模型甚至都可以不用上传平台,有一定编程基础用户还可以基于当前程序做二次开发

7710

Three.js深入浅出:1-搭建Three.js开发环境

学习环境:入门学习threejs阶段,html文件中直接引入threejs 开发环境下 npm安装引入 如果你使用Vue + threejs或React + threejs技术栈,那么threejs...如果不是正式开发Web3D项目,只是学习threejs功能,完全没必要用webpack或vite搭建一个开发环境。...学习使用环境,只要创建一个.html文件,编写threejs代码,最后通过本地静态服务打开.html文件就行。.../build/three.module.js'; type="importmap"配置路径 学习环境中,.html文件引入three.js,最好方式就是参考threejs官方案例,...使用构建工具与打包器开发者更喜欢仅使用单独包说明符(如'three')而非相对路径,examples/ 目录中文件使用相对于 three.module.js 引用并不符合这一期望。

50620

一个简单案例,理解threejs中几个基本概念

随着浏览器性能不断提升,以及对webgl支持,在浏览器上展示3d模型早已不是痴人说梦,不过如果使用原生webgl的话,开发起来难度还是略大,一个常见解决方案就是使用threejs,这是一个封装库...基本概念 在threejs中有几个基本概念: 1.场景 场景就是你看到花花世界,这就是一个场景,反映threejs中,场景就是所有物体容器,例如,我们想显示一个卡车,那就要将这个卡车放加入到场景中...代码实现 创建一个普通项目,将下载到threejsbuild/three.js文件拷贝到项目中,然后在项目中创建一个html页面,如下: ?...第2行代码表示创建一个相机,第一个参数视角为60度,第二个参数表示实际窗口宽高比,第三个参数表示近平面,第四个参数表示远平面(关于最后两个参数,涉及到一点图形学东西,人眼睛看到空间区域一个四棱台...,类似于setTimeout,主要用途按帧对网页进行重绘,然后在重绘过程中使图像旋转起来,如下: ?

1.9K20

Ocelot简易教程(七)之配置文件数据库存储插件源码解析

明白原理后,大家就可以自行改写进行扩展来满足自身需要了! 再次感觉张队审稿,并给出修改意见!...这里我选择对IApplicationBuilder进行扩展,因为这样方便做一些其他事情,比如,重写限流,集成自定义验证等等。...经过这么一分析是不是觉得很简单呢。当然具体为什么按照上面处理就能够从数据库获取配置了呢,这个还需要你分析了源码后才能了解。我也只是给你引路,传达我实现思路。...源码 https://github.com/yilezhu/Ocelot.ConfigAuthLimitCache 总结 今天抽空对上篇文章进行了补充说明,目的给大家阐述下,配置文件存储到数据库中实现过程及原理...让你能够根据自身需要来进行改写来满足你业务需求。当然我也只是给你引路,具体为什么这样实现下就能够成功呢?答案在Ocelot源码中。

76700

Threejs在你网页里放一个冰墩墩!

大帅之前写过几篇Threejs文章,想要学习网页3D渲染小伙伴们记得点点赞,后续我还会多更新一些Threejs教程。 2天赚了4个W,手把手教你用Threejs搭建一个Web3D汽车展厅!...GLTF格式(图形语言传输格式)由OpenGL官方维护团队推出现代3d模型通用格式,可以包含几何体、材质、动画及场景、摄影机等信息,并且文件量还小。有3D模型界JPEG之称。...GLTF模型好处就是几乎可以省去这个步骤,因为模型文件中已经全部包含了建模师各种设定。...我在导出GLTF格式之前设置不是这样呀。 可能由于兼容性问题,脸部的卡通材质丢失了,还有冰晶外壳需要环境反射贴图也没有了。...我也不清楚具体哪里兼容性问题,不过,我们依然可以用代码重新把材质给模型加上呀。

2.3K20

Threejs入门之二十五:Threejs加载gltf文件

这一节我们来通过Threejs加载一个glft格式三维模型文件,首先我们先简单了解下gltf文件gltf文件gltf文件全称Graphics Language Transmission Forma(图形语言传输格式...),一种三维模型格式,用于传输和加载3D场景和模型;其号称是图形界JPEG,能够实现快速模型数据交换。...gltf文件核心JSON文件,一个gltf文件可传输一个或多个场景, 包括网格、材质、贴图、蒙皮、骨架、变形目标、动画、灯光以及摄像机等信息。...onError : Function ) url — 包含有.gltf/.glb文件路径/URL字符串。...gltf我们可以看到,该gltf文件里面包含一个scene,scene文件目录如下 我们可以在material中看到color字段,通过该字段我们可以修改各个材质颜色,在上面loader.load回调函数中

5.8K31

第1章 开启Threejs之旅(二)

微信截图_20220410162709.png gltf glb模型下载 9、第一个框架 为了方便实验,我们提供了2个简单框架供你使用。你只要改变其中一些代码或者参数,就能够得到实验结果。...在Threejs中有多种相机,这里介绍两种,它们: 透视相机(THREE.PerspectiveCamera)、这里我们使用一个透视相机,透视相机参数很多,这里先不详细讲解。...,几何体由什么组成,已经不是本课主要内容了,后面的课程我们会详细学到。...先看看离线渲染,想想《西游降魔篇》中最后佛主,他肯定不是真的,电脑渲染出来,其画面质量很高,它是事先渲染好一帧一帧图片,然后再把图片拼接成电影。这就是离线渲染。...10、场景,相机,渲染器之间关系 Three.js中场景一个物体容器,开发者可以将需要角色放入场景中,例如苹果,葡萄。同时,角色自身也管理着其在场景中位置。

1.4K00

基于 Threejs web 3D 开发入门

下图Threejs绘制一个3D立方体动画截图,在这个demo里,立方体会动态旋转,threeJS 30行代码就可以完成这么一个demo。...为了跟真实世界更加接近,Threejs支持模拟不同光源,展现不同光照效果,有点光源、平行光、聚光灯、环境光等。...Threejs相机跟真实世界相机不完全一样,这里相机可见区域一个立方体,称为相机示景体。...正是因为透视投影相机示景体近小远大,才会导致同样一个物品放在不同位置显示出近大远小效果。正交投影相机因为远近平面大小一样,所以同一个物品距离相机远近不影响物体在画布上投影展示大小。...外部模型 现实世界丰富多彩,不是Threejs几种默认几何形状和材质所能表达,实际运用中,很多时候需要用到外部模型,通过3D建模软件构建物体三维模型并导出模型文件Threejs导入模型文件进行使用

15.2K43

ThreeJS 炫酷特效旋转多面体Web页 Demo 01《ThreeJS 炫酷特效制作》

ThreeJS 中有三个很关键对象,分别是 摄像头、场景以及渲染器: 其中 场景 通过 ThreeJS “搭建”呈现特效一个“舞台”,创建好一个场景后,即可往这个场景中添加对应多种物体,例如多边形...;除此之外还引入了 three.min.js 依赖,另外一个 js 名为 1bitDemo.js 我们等下须编写 js 文件代码。...表示渲染网格将会呈现线框形式 side 设置为 THREE.DoubleSide 表示双面渲染,即渲染时候物体双面都会进行渲染,不是只有一面(性能考虑若想设置只渲染一面设置为 THREE.FrontSide...) 3.3 创建 Mesh 用于组装 3D 对象 Mesh 在 ThreeJS 3D 对象中必要,通过 创建 Mesh 组合 3D 对象,创建 Mesh 需要指定对应几何体以及材质,如以下代码...太阳光通过 DirectionalLight 进行创建,一种平行光,并不会随距离衰减。

44210

第1章 开启Threejs之旅(一)

4、Threejs能做什么 一言以蔽之,它能写出在浏览器上流畅运行3D程序。 在美的文字,也比不上图片,所以我们喜欢看美女,不是美文,嘿嘿。...相信读这篇文章男性多于女性,所以,我不撒谎,美女我也喜欢。 让我们看一些图,来领会一下,Threejs能做什么?...这是three.js最终被引用文件。一个已经压缩,一个没有压缩js文件。 Docs目录:这里three.js帮助文档,里面各个函数api,可惜并没有详细解释。...7、配置你开发环境 在QQ群里,很多朋友经常问一些关于开发环境问题,我们在这里回答一下: 1、为什么我浏览器不能运行Three.js?...,这个文件会自己初始化threejs一些变量和环境

1.7K40

Threejs入门之一:本地运行

Threejs是什么three.js一个基于JavaScript开发WebGL引擎,可以直接在浏览器中呈现3D场景。threejs提供了大量特性与API以便于在浏览器中绘制3D场景。...Threejs本地运行threejs官方地址:https://github.com/mrdoob/three.js 由于github服务器在国外,我们访问会比较慢,所以,我们可以将threejs下载到本地...,在本机上运行,后面查看threejs帮助文档和示例程序就比较方便,因此,在本地搭建一个threejs运行环境 1、浏览器打开官网,在鼠标点击Code下拉菜单,选择DownloadZIP下载源码 2...、解压下载threejs压缩包,并用vscode打开,可以看到如下目录结构 3、查看官方文档:在vscode左侧目录树中找到threejs–docs–index.html,打开index.html...文件,在该文件上点击右键—Open With Live Server,即可在浏览器中查看相关帮助文件,点击en下拉框可以切换为中文显示。

1.1K31

Threejs 快速入门

最小环境 首先,在正式学习Threejs前,有几个概念需要说明Threejs在底层其实还是调用html5中canvas api来实现绘图。...但和我们一般绘制2D图像不同,Threejs在底层使用canvaswebgl context来实现3D绘图。...其实Threejs在定义一个3D物体时,需要提供两个信息,第一形状信息,也就是这个物体上每一个点,每一个面的坐标信息,第二材质信息,用于告诉Threejs物体颜色,纹理,反光等信息。...有了这些信息,Threejs才知道要如何渲染这个物体。上面的new BoxGeometry(1, 1, 1),就是告诉Threejs,我要显示一个长宽高各为1长方形。...new MeshBasicMaterial({ color: 0xff0000}),就是要告诉Threejs,这个长方体红色

10K53
领券