iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >JS 3D 模型
  • 321
分享到

JS 3D 模型

模型JS 2023-01-31 06:01:47 321人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

最近断断续续地写出了这么个东西:Http://ucren.com/demos/d3D/index.html。 这是一个简单的 js 3D 模型,能跑在包括 IE6 的所有浏览器上,结合一下 tween 缓动算法,理论上已经可以完美模拟像 h

最近断断续续地写出了这么个东西:Http://ucren.com/demos/d3D/index.html

这是一个简单的 js 3D 模型,能跑在包括 IE6 的所有浏览器上,结合一下 tween 缓动算法,理论上已经可以完美模拟像 http://www.cu3ox.com/ 这个网站上方 banner 的各种变换效果了。

介绍一下实现细节,矢量绘图仍然用的是 Raphael 库,Raphael 我在《如何用 JS 实现 3D ×××效果》这篇文章里有过介绍。此外,我参考了大量关于三维透视的文章,在下面的一些实现上用到了很多相关知识。

坐标系

我们通常用一根带原点和正方向箭头的直线来表示数轴,数轴就是一个一维坐标系,两条在原点处相交并互相垂直的数轴就形成了二维坐标系,也叫平面直角坐标系,它用两个参数 x,y 来表示平面上一个点的位置,在平面直角坐标系上,加入一条经过原点且垂直于该平面的数轴就形成了三维坐标系,它用三个参数 x,y,z 来表示空间中一个点的位置。三维坐标系分为左手坐标系和右手坐标系两种,为了实现的方便,本例采用左手坐标系做为场景。

场景类 Sence

场景你可以理解为存放物体的一个有限大的空间,本例的场景可以添加任意多个不同的物体(比如长方体等),场景支持任意方向的旋转,对于旋转,本例场景的实现分为以下三种方式,他们分别是绕场景中任意一个参考点的 x 轴、y 轴和 z 轴旋转。场景发生旋转后的效果是遍历场景中每一个物体,使物体发生相对于参考点做相应的旋转。

渲染器类 Renderer

渲染器你可以理解成一部照相机,由一个位于场景中或场景外的某一个地点的人拍摄,输出的照片就是渲染器的产物。渲染器涉及到两个重要的参数:人的位置和照相机景深等。拍涉到的照片会直接输出到一个 <div> 容器上,电脑前的您就能看到物体了,如果在场景中的物体不断发生位置变化的同时,渲染器也在一直做拍照的工作,那么您将看到物体的动画过程,渲染器可以支持 vml/svg 或 canvas 等多种绘图适配器。

长方体类 Cuboid

为了实现长方体,本例中又加了三个重要的辅助类,他们是点类(Point)、线类(Line)和面类(Face),一个长方体由六个面确定,一个面由四条边线确定,一条边线由两个线头点确定。本例中,一个场景内的任意一个长方体都能单独进行旋转、位移等操作,在对体操作时,归根结底要落到组成体的每一个关键点的位置运算上。所以点是最重要的基础类,虽然它只能做位置变化的操作,但由它构成的每一个物体将会在点位置发生规则变化后产生很神奇的效果。

关于画家算法

渲染器工作时,会从他的角度上能看到的所有物体都描绘出来,即用 2D 的手法去描述 3D 的物体。这里涉及一个问题,离观察者越近的物体会挡住或部分挡住离得远的物体,同样的,在同一个物体上的多个面,离观察者越近的面会挡住或部分挡住离得远的面。本例采用画家算法来解决这个问题,“画家算法”表示头脑简单的画家首先绘制距离较远的场景,然后用绘制距离较近的场景覆盖较远的部分。画家算法里有多种实现,最常见的也最简单的是深度排序,本例用的也是深度排序,首先令每个面都具有中心点,再根据中心点的 z 轴坐标由大到小对面进行排序,排完序后的面即是离观察者由远及近的一个顺序,最后再逐个面进行渲染即可。

by huangzhilong

 

【本文首发于:搜索研发部官方博客】http://stblog.baidu-tech.com/?p=1031
关注百度技术沙龙

--结束END--

本文标题: JS 3D 模型

本文链接: http://www.lsjlt.com/news/189871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • JS 3D 模型
    最近断断续续地写出了这么个东西:http://ucren.com/demos/d3d/index.html。 这是一个简单的 JS 3D 模型,能跑在包括 IE6 的所有浏览器上,结合一下 tween 缓动算法,理论上已经可以完美模拟像 h...
    99+
    2023-01-31
    模型 JS
  • PHP加载3D模型【WebGL】
    这是另一篇关于如何使用 PHP加载 3D 模型的文章。 在这里,我使用 Laravel 作为后端及其存储。 我在前端使用 Three.Js 库来渲染和显示 3D 模型。 我将向您展示如何上传 3D 模...
    99+
    2023-09-28
    php 3d webgl
  • JS仿照3D手办模型展台实现示例详解
    目录前言效果预览代码片段styleScript核心科技获取旋转角度监听 touch 事件,通过开始、结束坐标计算移动方向根据坐标计算移动方向PC端支持 touch 事件前言 前几年实...
    99+
    2024-04-02
  • cocos2d-x在Lua中添加3d模型
    --3d模型和3D动画的创建require"Cocos2d"local Sprite3DScene=class("Sprite3DScene",function()   return cc.Scene:create()end)--添加cre...
    99+
    2023-01-31
    模型 cocos2d Lua
  • pytorch实践线性模型3d详解
    y = wx +b通过meshgrid 得到两个二维矩阵关键理解:plot_surface需要的xyz是二维np数组这里提前准备meshgrid来生产x和y需要的参数下图的W和I即p...
    99+
    2023-05-15
    pytorch线性模型 pytorch线性模型3d
  • matplotlib 3D模型绘制一朵小红花
    目录1. 含苞待放2. 灼灼其华前言: 在github上看到一个有趣的代码,虽然情人节已经过了两天,但还是想和大家分享^_^ 1. 含苞待放   3D模型的绘制需...
    99+
    2024-04-02
  • 基于神经网络的3D地质模型
    地球科学家需要对地质环境进行最佳估计才能进行模拟或评估。 除了地质背景之外,建立地质模型还需要一整套数学方法,如贝叶斯网络、协同克里金法、支持向量机、神经网络、随机模型,以在钻井日志或地球物理信息确实稀缺或不确定时定义哪些可能是岩石类型/属...
    99+
    2023-08-30
    神经网络 3d 人工智能
  • 基于Cesium怎么实现拖拽3D模型
    这篇文章主要介绍了基于Cesium怎么实现拖拽3D模型的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Cesium怎么实现拖拽3D模型文章都会有所收获,下面我们一起来看看吧。添加基站模型然后这篇博文介绍的主要...
    99+
    2023-07-02
  • pytorch实践线性模型3d源码分析
    这篇文章主要介绍“pytorch实践线性模型3d源码分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“pytorch实践线性模型3d源码分析”文章能帮助大家解决问题。y = wx +b通过meshg...
    99+
    2023-07-06
  • HTML5如何实现旋转立体魔方3D模型
    这篇文章给大家分享的是有关HTML5如何实现旋转立体魔方3D模型的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。下面是预览画面。制作流程首先你需要下载Html5开源库件lufyle...
    99+
    2024-04-02
  • 基于Cesium实现拖拽3D模型的示例代码
    目录添加基站模型拖拽这个地方是想实现一个什么效果呢?就是使用 cesium 在地图上添加一个3D模型,然后实现拖拽效果。 添加基站模型 然后这篇博文介绍的主要不是添加模型,但是也简单...
    99+
    2024-04-02
  • js实现3D轮播图效果
    本文实例为大家分享了js实现3D轮播图效果的具体代码,供大家参考,具体内容如下 主要有平移和旋转构成3d效果的轮播图,小白一只,不足之处还请大家多多指教,代码如下 css代码: ...
    99+
    2024-04-02
  • 详解JS浏览器事件模型
    目录什么是事件一个简单的例子如何绑定事件框架中的事件事件对象事件传播事件代理总结什么是事件 我想你很可能听说过事件驱动, 但是事件驱动到底是什么?为什么说浏览器是事件驱动的呢? 事件...
    99+
    2024-04-02
  • js通过audioContext实现3D音效
    本文实例为大家分享了js通过audioContext实现3D音效的具体代码,供大家参考,具体内容如下 前言 AudioContext的setPosition实现3D音效 效果展示 ...
    99+
    2024-04-02
  • 3d建筑投影打开建筑模型行业新篇章
    3D投影技术在市场上已经发展了多年了,人们在享受技术带来各种的福利的同时,也在不断地发展技术。并且,人们不断地把生活中的各部分力求用这门技术表现出来。3D建筑投影就是其中一个例子。3D建筑投影表现形式宽泛...
    99+
    2024-04-02
  • JS中的盒子模型有哪几种
    在JavaScript中,有两种盒子模型:1. 标准盒子模型(content-box):元素的尺寸仅包括内容区域,不包括内边距(pa...
    99+
    2023-09-21
    JS
  • Vue Three.js 的材質系統:讓你的 3D 模型更逼真
    紋理貼圖 紋理貼圖用於為模型添加顏色和細節。它們通常是 2D 影像,被投影到模型的表面上。Vue Three.js 支持多種紋理格式,包括 PNG、JPEG 和 TIFF。 // 使用紋理加載器加載紋理 const textureLoa...
    99+
    2024-03-09
    關鍵字:Vue Three.js、材質系統、3D 建模、紋理貼圖、法線貼圖、鏡面反射
  • js如何实现3d悬浮效果
    这篇文章主要介绍了js如何实现3d悬浮效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。效果如下:代码如下:<!DOCTYPE&nbs...
    99+
    2024-04-02
  • 怎么用js实现3D轮播图效果
    本篇内容主要讲解“怎么用js实现3D轮播图效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用js实现3D轮播图效果”吧!具体内容如下:主要有平移和旋转构成3d效果的轮播图,小白一只,不足之...
    99+
    2023-06-25
  • JS浏览器事件模型的示例分析
    小编给大家分享一下JS浏览器事件模型的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!JavaScript的特点1.JavaScript主要用来向HTML页...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作