从零开始学习3D可视化之爆炸图

原生JS实现图片爆炸特效 分享一个由原生JS实现的图片爆炸特效,效果如下: 实现的代码如下: <!doctype html> <html> <head> <meta charset="utf-8"> <title>原生JS实现图片爆炸特效</title> <style type="text/css"> ......... 阅读详情

说到爆炸图你第一时间想到的是什么?是这样吗?

不不不,爆炸图现在一般指立体装配图,有了爆炸图工程技术人员在绘制立体装配示意图时就显得轻松多了,不仅提高了工作效率还减少了工作的强度。如今这项功能不仅仅是用在工业产品的装配使用说明中,而且还越来越广泛的应用到机械制造中,使加工操作人员可以一目了然,而不再像以前一样看清楚个装配图也要花上半天的时间。

如何能更简洁地表述产品装配关系?能够让所有人一秒看懂产品各零部件之间的关系?ThingJS的爆炸图功能帮你快速解决这一问题!你只需花费很短的时间,就能学会这个功能!闲话少说,下面就为大家介绍如何利用ThingJS来快速制作爆炸图效果,快来看看吧!

一个物体模型要做爆炸图,可以在3dmax建模时根据爆炸图拆分需要,定义并命名各子对象(或叫子模型、子节点)。这些子对象在ThingJS在线开发中可作为模型子节点来控制,这些子节点可像单独模型对象物体一样进行移动、添加事件等操作。

要注意两点:

1.出于互动模型性能考虑,要求在模型上传前做塌陷。经塌陷的模型不会再有子节点保留(融合掉细节,故性能较高)。因此只有确有类似上述分项控制模型局部要求的模型才应该保留子对象信息(不做塌陷),虽然这样模型性能较差,但确实是特殊需要。

2. 拆分后模型子节点如果有多材质或点数超过上限在在线开发中会进行拆分,例如:3dmax命名一个子节点名字为“box”,由于该子节点使用了多种材质,该子节点在在线开发中会被命名成组,组内会被拆分并命名为“box_0”,“box_1”等对象。

爆炸图完整代码如下:

// 加载场景代码 
var app = new THING.App({
    url: '/api/scene/406e419fae9000a47a4a8899'
});

// 发电机模型节点数据
var nodeObjData = {
    '1': { name: '机座', offset: [0, 0, -1] },
    '2': { name: '保护装置', offset: [0, -1, 0] },
    '3': { name: '电瓶', offset: [0, -1, 0] },
    '4': { name: '排气口', offset: [0, 0, 1] },
    '5_0': { name: '过滤器', offset: [0, 0, 1] },
    '5_1': { name: '过滤网', offset: [0.5, 0, 1] },
    '6': { name: '供给装置', offset: [0, 0, 1] },
    '7': { name: '烟囱', offset: [-1, 0, 0] },
    '8': { name: '发电机' },
    '9': { name: '控制器', offset: [0, 1, 0] }
}

var nodeJsonData = null;  // 发电机模型节点对象
var generatorObj = null;  // 发电机对象
var expandState = false;  // 发电机展开状态
var expandCount = 0;  // 发电机展开次数

// 场景加载完成后执行
app.on('load', function (ev) {
    generatorObj = app.query('#generator')[0];  // 查询发电机对象
    nodeJsonData = getNode(generatorObj);  // 获取发电机模型节点对象

    // 创建测试按钮
    new THING.widget.Button('展开', expandObj);
    new THING.widget.Button('还原', unexpandObj);
    new THING.widget.Button('顶牌显示', createAllPanel);
    new THING.widget.Button('顶牌隐藏', hiddenAllPanel);

    // 设置摄像机位置和目标点
    app.camera.position = [8.607320990228896, 4.659529165486485, 2.463883920016444];
    app.camera.target = [5.457047915958038, 2.0011500043525103, -3.0191956945367244];

})

/**
 * 显示所有顶牌
 */
function createAllPanel() {
    for (let key in nodeObjData) {
        nodeJsonData[key].name = nodeObjData[key].name;
        createPanel(nodeJsonData[key]);
    }
}

/**
 * 隐藏所有顶牌
 */
function hiddenAllPanel() {
    for (let key in nodeObjData) {
        hiddenPanel(nodeJsonData[key]);
    }
}

/**
 * 展开物体
 */
function expandObj() {
    // 防止发电机在执行一次展开过程中多次点击
    if (expandState) {
        return;
    }
    expandState = true;
    expandCount++;
    for (let key in nodeObjData) {
        // 各子节点进行偏移
        objOffset(nodeJsonData[key], nodeObjData[key].offset);
    }
}

/**
 * 还原物体
 */
function unexpandObj() {
    // 展开次数为0,代表未展开
    if (expandCount == 0) return;
    for (let key in nodeObjData) {
        if (nodeObjData[key].offset) {
            // 计算还原时子节点需要进行的偏移量,数值为 -1 * 展开次数 * nodeObjData中定义的该子节点对应的偏移量
            let offsetValue = [-1 * expandCount * nodeObjData[key].offset[0], -1 * expandCount * nodeObjData[key].offset[1], -1 * expandCount * nodeObjData[key].offset[2]]
            objOffset(nodeJsonData[key], offsetValue);
        }
    }
    expandCount = 0;
}

/**
 * 获取节点对象
 */
function getNode(obj) {
    let nodeJson = {};
    // obj.subNodes 即可获取到一个物体的所有子节点
    for (let i = 0; i < obj.subNodes.length; i++) {
        let subnode = obj.subNodes[i];
        // 获取物体子节点对象中node属性的type值,只有当type值为Mesh时,才能对物体添加事件
        let type = subnode.node.type;
        if (type == 'Mesh') {
            nodeJson[subnode.name] = subnode;
        }
    }
    return nodeJson;
}

/**
 * 物体偏移
 */
function objOffset(obj, value) {
    if (!value) return;
    // 物体移动
    obj.moveTo({
        offsetPosition: value,  // 自身坐标系下的相对位置
        time: 500,  // 移动完成需要的时间
        complete: function () {
            expandState = false;
        }
    });
}

/**
 * 创建面板
 */
function createPanel(obj) {
    // 判断是否已经创建过面板,如果已创建,显示,否则创建面板
    var panel = obj.getAttribute('panel');
    if (panel != null) {
        panel.visible = true;
        return;
    }
    // 创建panel
    panel = new THING.widget.Panel({
        width: '100px',  // 设置面板宽度
        cornerType: 'polyline'  // 没有角标 none ,没有线的角标 noline ,折线角标 polyline
    })
    panel.addString(obj, 'name').caption('');  // 绑定物体身上相应的属性数据
    // 创建UIAnchor面板
    var uiAnchor = app.create({
        type: 'UIAnchor',  // 类型
        parent: obj,  // 设置父物体
        element: panel.domElement,  // 要绑定的dom元素对象
        localPosition: [0, 0, 0],  // 设置 localPosition 为 [0, 0, 0]
        pivotPixel: [-16, 109]  // 相对于面板左上角的偏移像素值,当前用值是角标的中心点
    });
    // 更改面板文本样式
    $('.ThingJS_wrap .main .ThingJS_UI .ThingJS_string-value').css('text-align', 'center');
    obj.setAttribute('panel', uiAnchor);
}

/**
 * 隐藏面板
 */
function hiddenPanel(obj) {
    var panel = obj.getAttribute('panel');
    if (panel != null) {
        panel.visible = false;  // 设置面板隐藏
    }
}

爆炸图现在作为分析图中最有效的一种,在工业设计、产品设计、建筑设计中是非常重要的一环,而在ThingJS平台制作产品爆炸图3D可视化可观看每个部件细节,自主操控,展开、还原、显示顶牌等,相比传统2D爆炸图更加直观高效!点击了解:https://www.thingjs.com/

Threejs项目实战之二:产品三维爆炸图效果展示 产品三维爆炸图效果展示项目 阅读详情

相关推荐

SolidWorks_动画模拟与仿真3_爆炸视图动画

摘要 爆炸视图动画是一种动态展示装配体拆解与组装顺序的技术,广泛应用于工业设计、产品说明和教学演示。本文介绍基于Three.js的爆炸视图动画实现方法,内容包括: 核心概念:爆炸视图通过分离零部件展示装配关系,动画化可增强顺序可视化、交互性和空间理解 技术方案:采用Three.js构建Web 3D场景,结合自定义动画控制器实现拆解/组装动画 关键实现: 场景初始化(相机、灯光、控制器) 装配体数据组织(零件位置、爆炸方向) 动画控制(顺序播放、进度调节) 交互功能(按钮控制、滑块调节)

H17853509096的博客 185

ThingJS学习笔记

1.现在模摸搭上建模这个需要专业人员操作 切记需要操作的物品或者建筑一定要设置属性,要不然无法操作 2,建模完毕后要对模型进行2次开发需要到ThingJS控制台上操作 3.进入thisgjs控制台 1.控制台会自动生成代码 //加载场景代码 var app = new THING.App({ // 场景地址 "url": "/api/scene/08c...

qq_34971162的博客 6681

基于threejs的3D爆炸碎片轮播图特效

这是一款基于threejs的3D爆炸碎片轮播图特效。该特效使用threejs来制作轮播图在切换时的爆炸特效,图片爆炸成碎片,然后组合为下一张新的图片,效果非常炫酷。

ThingJS实现面板与物体对象的连线

2D面板与三维物体的之间进行连线,对于可视化的呈现会更加直观,并且有联动的效果。 实现原理: 1、获取面板与对象点位集合,将2D信息面板的坐标转成3D坐标 2、创建类型为Line的像素线 3、当物体移动时,使用update方法,不断更新物体位置,达到物体与2D面板一直处于连接状态

宇叔儿 482

别再只怪贴片厂了!从MLCC内部裂纹,看懂物料质量与工艺应力的博弈

本文深入分析了MLCC内部裂纹的失效原因,提供了从裂纹形态学到生产全流程的失效风险地图的完整分析框架。通过实战案例和检测技术组合,帮助工程师精准锁定MLCC失效背后的真凶,优化物料质量和工艺应力管理。

weixin_33122947的博客 293

Android 13 Hotseat定制化修改——001 hotseat布局方向

一.背景由于需求是需要自定义修改Hotseat,所以此篇文章是记录如何自定义修改hotseat的,应该可以覆盖大部分场景,修改点有修改hotseat布局方向,hotseat图标数量,hotseat图标大小,hotseat布局位置,hotseat图标禁止形成文件夹,hotseat图标禁止移动到Launcher...

Java_fenxiang的博客 1104

F3D 3D查看器:从零开始掌握高效3D文件可视化

你是否曾经为查看一个3D模型而不得不安装庞大的专业软件?是否厌倦了等待CAD软件缓慢启动的煎熬?F3D(Fast and minimalist 3D viewer)正是为解决这些问题而生。作为一款开源、轻量级的3D文件查看器,F3D支持超过50种3D文件格式,从游戏开发的glTF到工程设计的STEP文件都能轻松处理,让你在几秒钟内就能预览复杂的3D模型。 ## 为什么你需要F3D而不是其他工具?

gitblog_00099的博客 646

SDR实战(五)-AD9361多芯片同步技术详解

本文详细解析了AD9361多芯片同步技术在SDR系统中的实现方法,涵盖硬件连接方案、软件配置流程及同步验证技巧。通过等长时钟走线、低抖动时钟分配和精确的SYNC信号控制,解决MIMO系统中多AD9361芯片的时钟同步难题,提升系统性能与稳定性。

weixin_30952535的博客 762

Banana Vision Studio实战:如何用AI制作专业爆炸图

本文介绍了如何在星图GPU平台上自动化部署Banana Vision Studio精准结构拆解与工业美学实验室镜像,快速生成专业级产品爆炸图。用户仅需上传实物照片或简短描述,即可在30秒内输出适用于产品发布会、专利文档及教学课件的高清结构可视化图像,显著提升工业设计与技术传播效率。

weixin_42418754的博客 383

python 写一个简单的 telegram bot (电报机器人)

replit.com 环境配置太恶心了,只能使用 poetry.poetry 这个名字是挺好听,用起来也是很垃圾,太恶心。heroku.com 注册登录不方便,需要各种验证。所以,部署的问题,目前搁置。

waterHBO的博客 3198

基于matlab的形态学的权重自适应图像去噪

数学形态学以图像的形态特征为研究对象,通过设计一套独特的数字图像处理方法和理论来描述图像的基本特征和结构,通过引入集合的概念来描述图像中元素与元素、部分与部分的关系运算。因此,数学形态学的运算由基础的集合运算(并、交、补等)来定义,并且所有的图像矩阵都能被方便地转换为集合。随着集合理论研究的不断深入和实际应用的拓展,图像形态学处理也在图像分析、模式识别等领域起着重要的应用。实验结果表明,如果仅通过串联滤波器去噪,则往往具有一定的局限性,在结果图像中也保留着较为明显的噪声。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 759

Nano-Banana产品拆解引擎:小白也能做的专业级爆炸图

本文介绍了如何在星图GPU平台上自动化部署🍌 Nano-Banana 产品拆解引擎镜像,快速生成专业级产品爆炸图。用户仅需输入结构化文字描述,即可一键产出符合工程规范的Knolling风格拆解图,广泛应用于产品手册编制、技术培训材料制作及专利附图生成等场景。

weixin_36123300的博客 647

NTN(三) Timing

这篇看下k_offset和k_mac,如38.300所述,k_offset是配置的调度偏移量,需要大于或等于service link RTT和Common TA之和;k_mac 是配置的偏移量,需要大于或等于 RP 和 gNB 之间的 RTT。 相关参数会通过RRC层NTN-config配置,其中的cellSpecificKoffset-r17和kmac-r17主要用于各种Timing场景的偏移。 kmac:如果DL和UL frame timing 在 gNB端未对齐,网络端

asd199086的博客 4828

实测Banana Vision Studio:如何用AI快速制作商品爆炸图?

本文介绍了如何在星图GPU平台上自动化部署Banana Vision Studio精准结构拆解与工业美学实验室镜像,高效生成商品爆炸图。该镜像专为产品可视化设计,支持从单张产品图一键生成平铺拆解图、爆炸图及技术手稿,广泛应用于电商详情页制作、工业品技术文档与专利附图等典型场景。

weixin_32389853的博客 158

2025小红书爬虫还能活?破解x-s签名+动态Cookie,亲测爬1000条笔记零封禁(附逆向全过程)

上周帮美妆行业的朋友爬小红书“口红推荐”笔记,刚发30个请求就被403,抓包一看x-s签名不对;换Cookie继续爬,爬50条又被封——小红书的反爬这两年简直是“地狱模式”:动态Cookie每10分钟过期,x-s签名算法季度更新,连请求头的User-Agent顺序错了都会被拦。。这篇文章不藏私,把逆向x-s签名的全过程、动态Cookie的维护技巧、1000条稳定爬取的实战代码全给你,连我踩过的8个坑都标出来了(最后附代理池配置,IP零封禁的关键)。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 7413

基于 Simulink 的单相 PWM 整流器(四象限变流器)在高铁辅助电源系统中的建模与仿真实战教程

这是一份基于 Simulink 的实战教程。在高铁牵引供电与辅助电源系统中,单相 PWM 整流器(又称四象限变流器,4QC)是极其核心的“绿色电源”枢纽。传统的二极管整流器虽然结构简单,但会导致严重的输入电流畸变和低功率因数,对电网造成极大的谐波污染。而 PWM 整流器通过高频主动控制,不仅能将单相交流电转换为平稳的直流电,还能实现输入电流正弦化、单位功率因数(PF=1)运行,并支持能量双向流动(如列车再生制动时的能量回馈)。本教程将带你从数学模型出发,搭建一套高性能的电压电流双闭环控制系统。

amy_mhd的博客 47

Nano-Banana产品拆解引擎:手把手教你做爆炸图与部件展示

本文介绍了如何在星图GPU平台上自动化部署🍌 Nano-Banana 产品拆解引擎镜像,快速生成专业级产品爆炸图。用户仅需输入文字描述,即可一键产出带中文标注、按装配逻辑排布的高清拆解图,广泛应用于电商详情页、产品说明书及工业设计展示等场景。

weixin_35414260的博客 632

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

设计师福音:用Banana Vision Studio轻松制作专业级爆炸图

本文介绍了如何在星图GPU平台上自动化部署Banana Vision Studio精准结构拆解与工业美学实验室镜像,高效生成专业级产品爆炸图。该镜像专为工业设计场景优化,支持上传产品描述或图片,一键输出平铺拆解图、爆炸图及技术手稿,广泛应用于供应链装配指引、电商营销图制作与设计教学展示。

weixin_42514750的博客 317

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

5分钟搞定ECharts 3D饼图:零基础也能上手的可视化教程

本文提供了一份零基础也能快速上手的ECharts 3D饼图制作教程,详细介绍了从环境准备、核心配置到高级定制技巧的全过程。通过实例代码和常见问题解答,帮助读者轻松实现专业级的数据可视化效果,特别适合需要快速掌握3D饼图开发的初学者。

weixin_30839881的博客 254

Nano-Banana拆解引擎:5分钟生成高清产品爆炸图,零基础也能用

本文介绍了如何在星图GPU平台上自动化部署🍌 Nano-Banana 产品拆解引擎镜像,快速生成专业级产品爆炸图与Knolling平铺图。用户仅需输入一句话描述,5分钟内即可产出可用于工业设计、教学演示或电商详情页的高清结构化拆解图像,零基础也能高效完成。

weixin_36282234的博客 463

Nano-Banana实测:如何用AI快速制作产品爆炸图

本文介绍了如何在星图GPU平台上自动化部署🍌 Nano-Banana产品拆解引擎镜像,快速生成专业的产品爆炸图。该平台简化了部署流程,用户通过输入文字描述,即可自动化生成用于电商详情页、产品说明书等场景的清晰部件拆解图,极大提升了内容创作效率。

weixin_42465332的博客 633

解锁数据新维度:深入了解三维可视化大屏技术与应用

随着WebGL技术的成熟、硬件性能的提升以及相关开发工具和平台的不断涌现,我们有理由相信,3D可视化将在更多领域扮演关键角色,成为连接数字世界与物理世界的重要桥梁,帮助我们更深入地理解复杂性,做出更明智的决策。这时,三维(3D)可视化大屏应运而生,它以其直观、沉浸、交互的特性,为数据展示和决策支持开辟了新的可能性。想象一下,从下方这种传统的二维面板,跃升到如后图所示的立体、可交互的三维场景,其信息传递的效率和用户体验的提升是显而易见的。但在追求更直观、更深入洞察的场景下,3D往往是更优选。

sanweikeshihua的博客 2285

AI拆解黑科技:用Nano-Banana轻松制作电子产品爆炸图

本文介绍了如何在星图GPU平台上自动化部署🖥️Nano-Banana: 结构拆解实验室镜像,快速生成专业级电子产品爆炸图。用户仅需输入简短描述,即可在30秒内获得带指示线、标注清晰、纯白背景的高清结构视图,广泛应用于硬件教学、工业设计与产品维修文档制作。

weixin_30951515的博客 489

[特殊字符] Nano-Banana保姆级教学:新手也能做出专业级爆炸图

本文介绍了如何在星图GPU平台上自动化部署🍌 Nano-Banana产品拆解引擎镜像,快速生成专业级产品爆炸图。用户只需输入文字描述,该工具即可自动创建用于产品展示、教学图解或创意内容的部件分解图,极大降低了专业可视化内容的制作门槛。

weixin_35696112的博客 308

设计师福音:Banana Vision Studio快速生成爆炸图教程

本文介绍了如何在星图GPU平台上自动化部署Banana Vision Studio精准结构拆解与工业美学实验室镜像,快速生成专业级产品爆炸图。设计师仅需输入自然语言描述并选择预设风格,即可一键输出用于工业设计提案、用户手册或跨部门技术沟通的结构可视化图像,显著提升设计表达效率。

weixin_34456923的博客 239

Banana Vision Studio实战:如何用AI快速制作商品爆炸图?

本文介绍了如何在星图GPU平台上自动化部署Banana Vision Studio精准结构拆解与工业美学实验室镜像,快速生成专业级商品爆炸图。用户上传一张商品照片,即可一键输出适用于电商详情页、产品说明书及工程评审的多风格结构可视化图像,显著提升工业设计与内容生产效率。

weixin_35756690的博客 443
上一篇: 3D可视化色彩设计大揭秘
下一篇: 从零开始学习3D可视化之拾取
ThingJS_小锘
博客等级 码龄6年 170粉丝 254原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值