当前位置: 首页 > news >正文

面向Three.js开发者的3D自动纹理化开发包

DreamTexture.js 是面向 three.js 开发者的 3D 模型纹理自动生成与设置开发包,可以为 webGL 应用增加 3D 模型的快速自动纹理化能力。

aa3

图一为原始模型, 图二图三为贴图后的模型。提示词:

city, Realistic , cinematic , Front view ,Game scene graph

1、DreamTexture.js 开发包内容

DreamTexture.js 基于 Three.js 和稳定扩散(stable diffusion) AI 模型开发,用于实现 3D 模型的自动纹理化,当然版本 V1.0,主要文件及目录组织结构如下:

开发包文件说明
dream-texture.cjscjs 格式库文件
dream-texture.esmesm 格式库文件
dream-texture.umdumd 格式库文件
stable-diffusion-guide.md用于 DreamTexture.js 的稳定扩散服务安装指南
LICENSE.md开发包许可协议文件
example/DreamTexture.js 使用示例目录

2、DreamTexture.js 开发包快速上手

以 ESM 库为例介绍如何使用 DreamTexture.js 开发包为 Three.js 应用增加 3D 模型的自动化纹理能力。

首先参考开发包中的稳定扩散服务安装指南部署自己的 stable diffusion api 服务,支持 windows 和 Linux。

接下来安装 three.js 开发环境,安装完成后需要引入 DreamTexture.js 库文件,以 ESM 库为例,引入代码如下:

import * as THREE from 'three';
import DreamTexture from './dream-texture.esm.min';

现在创建一个场景,在场景中导入 GLTF 模型 ,并可以适当的旋转或移动模型:

//将模型导入到场景
const gltfLoader = new THREE.GLTFLoader();
gltfLoader.load('monkey.glb', async (e) => {scene.add(e.scene);
});// 将模型旋转到任何你想要的角度!
box.rotation.y = -Math.PI / 4;

然后实例化一个 DreamTexture 对象,注意要在参数中指定你的稳定扩散 API 服务的 URL:

//初始化DreamTexture对象,传入您的stable diffusion api 地址
const dt = new DreamTexture({baseUrl: 'http://127.0.0.1:7860', //stable diffusion url
});

现在就可以调用 DreamTexture 对象的 setTexture 方法传入提示词等参数, 让 AI 模型自动生成生成一张纹理图片,并投射到模型上,代码如下:

//编写提示词和其他参数
// 成功启动stable diffusion api后,可在 http://127.0.0.1:7860/docs 查看文档
const params = {prompt: 'monkey head, Brown hair, cartoon',//描述所需图像的细节越详细,Stable Diffusion生成效果越接近描述,较少描述则更具创意性。negative_prompt: 'blurry',//不希望Stable Diffusion生成的内容,用于排除不需要的元素。denoising_strength: 0.85,// 去噪强度cfg_scale: 15,//文字CFG比例image_cfg_scale: 7,//图片CFG比例steps: 10,//采样步数sampler_index: 'DPM++ SDE Karras',sampler_name: '',
};
dt.setTexture(scene, params).then((res) => {console.log('纹理添加成功!');
});

3D 模型的自动纹理化效果如下:

案例 1:

aa2

图一为原始模型, 图二图三为贴图后的模型。提示词:

car, Realistic , photography , hyper quality , high detail , high resolution , Unreal Engine , Side view

案例 2:

aa1

图一为原始模型, 图二图三为贴图后的模型。图二提示词:

Realistic , photography, bottle, porcelain

图三:将'porcelain'换为'glass'

3、DreamTexture.js 开发包 cjs/umd 库文件的使用

DreamTexture 支持三种常用的 js 库格式,除了前面介绍的 esm 格式,还支持 cjs、umd 格式:

cjs 库的引入代码如下:

const ProjectedMaterial = require('./dream-texture.cjs.js');

umd 库的引入代码如下:

<script src="./three.js"></script>
<script src="./dream-texture.umd.js"></script>

4、DreamTexture.js 开发包 API 接口说明

DreamTexture.js 的 API 接口非常简单,说明如下:

  • new DreamTexture({ baseUrl })

初始化 DreamTexture 对象,稍后用于 3D 模型的自动纹理化。

参数描述
baseUrlstable diffusion api 地址
  • dreamTexture.setTexture(object3d:THREE.Object3D, params)

DreamTexture 会将传入的 object3d 的正视图作为依据来完成 3D 场景的自动纹理化,包括纹理的生成和自动投射。

参数描述
object3dTHREE.Object3D。支持 Group 和 Mesh。
paramsstable diffusion img2img api 的参数

3D自动纹理开发包:DreamTexture.js自动纹理化开发包 - NSDT

转载:面向Three.js开发者的3D自动纹理化开发包 (mvrlink.com)

相关文章:

面向Three.js开发者的3D自动纹理化开发包

DreamTexture.js 是面向 three.js 开发者的 3D 模型纹理自动生成与设置开发包&#xff0c;可以为 webGL 应用增加 3D 模型的快速自动纹理化能力。 图一为原始模型, 图二图三为贴图后的模型。提示词&#xff1a; city, Realistic , cinematic , Front view ,Game scene graph 1、…...

数字孪生技术与VR:创造数字未来

在当今数字化浪潮中&#xff0c;数字孪生和虚拟现实&#xff08;VR&#xff09;技术是两大亮点&#xff0c;它们以独特的方式相互结合&#xff0c;为各个领域带来了创新和无限可能。本篇文章将探讨数字孪生与VR之间的关系&#xff0c;以及它们如何共同开辟未来的新前景。 数字…...

系统架构设计师-第15章-面向服务架构设计理论与实践-软考学习笔记

面向服务的体系结构&#xff08;Service-Oriented Architecture, SOA) 面向服务的体系结构&#xff08;Service-Oriented Architecture, SOA&#xff09;是一种软件架构模式&#xff0c;它将应用程序的不同功能组织为一组可重用的、松耦合的、自治的服务&#xff0c;这些服务通…...

为什么我觉得Rust比C++复杂得多?

为什么我觉得Rust比C复杂得多&#xff1f; Rust自学确实有一定门槛&#xff0c;很多具体问题解决起来搜索引擎也不太帮的上忙&#xff0c;会出现卡住的情况&#xff0c;卡的时间长了就放弃了。最近很多小伙伴找我&#xff0c;说想要一些c语言资料&#xff0c;然后我根据自己从…...

python sqlalchemy(ORM)- 03 增删改查

文章目录 ORM更新数据ORM查询ORM删除操作处理关系对象多表的关联查询 本节所有案例基于&#xff08;第一节 python sqlalchemy&#xff08;ORM&#xff09;- 01 ORM简单使用&#xff09;中的User、Address两个模型类 ORM更新数据 查询到模型类对象&#xff0c;直接修改其属性…...

Flutter笔记:完全基于Flutter绘图技术绘制一个精美的Dash图标(上)

Flutter笔记 完全基于Flutter绘图技术绘制一个精美的Dart语言吉祥物Dash&#xff08;上&#xff09; 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://…...

学习gorm:彻底弄懂Find、Take、First和Last函数的区别

在gorm中&#xff0c;要想从数据库中查找数据有多种方法&#xff0c;可以通过Find、Take和First来查找。但它们之间又有一些不同。本文就详细介绍下他们之间的不同。 一、准备工作 首先我们有一个m_tests表&#xff0c;其中id字段是自增的主键&#xff0c;同时该表里有3条数据…...

796. 子矩阵的和(二维前缀和)

题目&#xff1a; 796. 子矩阵的和 - AcWing题库 思路&#xff1a; 1.暴力搜索&#xff08;搜索时间复杂度为O(n2)&#xff0c;很多时候会超时&#xff09; 2. 前缀和&#xff08;左上角&#xff08;二维&#xff09;前缀和&#xff09;&#xff1a;本题特殊在不是直接求前…...

利用ChatGPT进行股票走势分析

文章目录 1. 股票分析2. 技巧分析3. 分析技巧21. 股票分析 这张图片显示了一个股票交易软件的界面。以下是根据图片内容的一些解读: 股票代码: 图片右上角显示的代码是“600517”,这是股票的代码。 图形解读: 该图展示了股票的日K线图。其中,蜡烛图表示每日的开盘、收盘、最…...

万字解析设计模式之单例模式

一、概述 1.1简介 单例模式&#xff08;Singleton Pattern&#xff09;是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式&#xff0c;它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保…...

vue2.x 二次封装element ui 中的el-dialog

在做后台管理系统的时候&#xff0c;dialog组件是我们使用频率比较高的组件&#xff0c;但是有一些需求现有的组件是不满足的。因此会需要我们做二次封装。 组件本身的属性我们保留&#xff0c;只需要根据需求添加&#xff0c;然后在使用的时候props去拿取使用就可以了。 本次遇…...

ssh连接Ubuntu虚拟机出现connection reset by ip地址 port 22怎么解决

使用前提&#xff1a;我是用Windows去连接安装在本机的Ubuntu虚拟机的时候出现的这个问题。 解决的方法&#xff1a;我使用了很多网络上方法&#xff0c;都没有用&#xff0c;发现我把IP地址搞错了 请继续看下去&#xff0c;因为有可能你会错过解决的方法。 在Windows网络连…...

树莓派4B安装ffmpeg

环境&#xff1a; piraspberrypi:~/x264 $ lsb_release -aNo LSB modules are available.Distributor ID: RaspbianDescription: Raspbian GNU/Linux 10 (buster)Release: 10Codename: buster 装H264 git clone --depth 1 https://code.videolan.org/video…...

LeetCode|动态规划|1035. 不相交的线 、53. 最大子数组和

目录 一、1035. 不相交的线 1.题目描述 2.解题思路 3.代码实现 二、53. 最大子数组和 1.题目描述 2.解题思路 3.代码实现&#xff08;动态规划解法&#xff09; 一、1035. 不相交的线 1.题目描述 在两条独立的水平线上按给定的顺序写下 nums1 和 nums2 中的整数。 现…...

一体式IO模块:汽车行业的数字化转型助推器

随着市场经济需求的不断增长&#xff0c;汽车行业的自动化和智能化已经成为行业发展的必然趋势。在这个背景下&#xff0c;汽车行业的工作流程变得越来越复杂&#xff0c;工业机器人的广泛应用为汽车生产提供了强有力的支持&#xff0c;它们扮演着装配工、操作工、焊接工等多种…...

OpenCV官方教程中文版 —— Hough 直线变换

OpenCV官方教程中文版 —— Hough 直线变换 前言一、原理二、OpenCV 中的霍夫变换三、Probabilistic Hough Transform 前言 目标 • 理解霍夫变换的概念 • 学习如何在一张图片中检测直线 • 学习函数&#xff1a;cv2.HoughLines()&#xff0c;cv2.HoughLinesP() 一、原理…...

【Axure高保真原型】百分比堆叠柱状图

今天和大家分享百分比堆叠柱状图的的原型模板&#xff0c;鼠标移入堆叠柱状图后&#xff0c;会显示数据弹窗&#xff0c;里面可以查看具体项目对应的数据和占比。那这个原型模板是用中继器制作的&#xff0c;所以使用也很方便&#xff0c;只需要在中继器表格里维护项目数据信息…...

Vue.js中的双向数据绑定(two-way data binding)

聚沙成塔每天进步一点点 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发…...

TFN 2.5G SDH传输分析仪 FT100-D300S

今天给大家带来一款TFN 2.5G SDH传输分析仪--TFN FT100-D300S. D300S SDH测试模块&#xff0c;是FT100智能网络测试平台产品家族的一部分&#xff0c;是一个坚固耐用、锂电池超长供电的传统PDH/SDH测试解决方案&#xff0c;支持2.5Gbps到2.048Mbps速率的传输链路测试。支持在线…...

电脑录像功能在哪?一文帮你轻松破解

“电脑录像功能在哪里呀&#xff1f;最近因工作上的原因&#xff0c;需要使用电脑来录像&#xff0c;但是找了一上午都找不到在哪里&#xff0c;眼看已经快没时间了&#xff0c;现在真的很急&#xff0c;希望大家帮帮我。” 电脑已经成为了人们生活和工作中必不可少的工具&…...

BBDown:专业高效的哔哩哔哩命令行下载器完全指南

BBDown&#xff1a;专业高效的哔哩哔哩命令行下载器完全指南 【免费下载链接】BBDown Bilibili Downloader. 一个命令行式哔哩哔哩下载器. 项目地址: https://gitcode.com/gh_mirrors/bb/BBDown 在当今数字内容消费时代&#xff0c;高效获取和管理在线视频资源已成为许多…...

告别串口打印!用STM32+DS18B20做个OLED温湿度计(HAL库+SSD1306)

STM32实战&#xff1a;打造OLED温湿度监测系统&#xff08;DS18B20SSD1306&#xff09; 每次调试嵌入式项目时&#xff0c;盯着串口助手看数据总有种隔靴搔痒的感觉。最近在工作室整理零件时&#xff0c;发现抽屉里还躺着几片0.96寸OLED和DS18B20温度传感器&#xff0c;突然萌生…...

跨越物种与时空:TO-GCN方法在植物发育与光合作用调控网络解析中的创新实践

1. TO-GCN方法&#xff1a;突破传统共表达网络分析的时空局限 在植物生物学研究中&#xff0c;基因共表达网络分析一直是揭示复杂调控机制的重要工具。传统方法如WGCNA&#xff08;加权基因共表达网络分析&#xff09;虽然应用广泛&#xff0c;但在处理跨物种、跨条件或跨组织的…...

告别手动测量!用ArcGIS+CAD搞定河道平均宽度的两种实用方法(附详细步骤)

河道平均宽度计算实战&#xff1a;ArcGIS与CAD高效协同方案解析 河道宽度测量是水文分析、防洪规划与生态评估中的基础工作&#xff0c;但传统手工测量方式在面对复杂河道形态时往往效率低下。本文将深入解析两种基于ArcGIS与CAD协同的自动化计算方法&#xff0c;通过技术组合实…...

保姆级教程:用HackRF One复现汽车钥匙重放攻击(附完整命令与避坑点)

从零掌握HackRF One信号重放&#xff1a;433MHz汽车钥匙实战全解析 当你在停车场按下车钥匙按钮时&#xff0c;那串看似神秘的无线电波背后隐藏着怎样的安全漏洞&#xff1f;作为硬件安全领域的入门神器&#xff0c;HackRF One让普通爱好者也能窥探射频世界的奥秘。本文将带你用…...

从Simulink到Tina:硬件工程师如何更“接地气”地获取电路传递函数?

从Simulink到Tina&#xff1a;硬件工程师如何更“接地气”地获取电路传递函数&#xff1f; 在系统级仿真与PCB调试的鸿沟之间&#xff0c;硬件工程师常常面临一个尴尬的现实&#xff1a;Simulink的数值解虽然精确&#xff0c;却像黑箱般难以直接指导电路板上电阻电容的调整。当…...

Linux 登录用户、主机名、提示符详解(新手不迷路)

前言刚打开Linux终端&#xff0c;新手总会被一行奇怪的字符搞懵&#xff1a;ubuntuubuntu:~$ —— 这串字符到底是什么意思&#xff1f;“ubuntu”重复出现&#xff0c;冒号、波浪号、美元符号又代表什么&#xff1f;其实&#xff0c;这串字符就是Linux的“提示符”&#xff0c…...

三步法实战指南:用FanControl打造静音高效的Windows风扇控制系统

三步法实战指南&#xff1a;用FanControl打造静音高效的Windows风扇控制系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitHub_T…...

别再手动分色了!用MaterialIDsRandomGenerator插件5分钟搞定游戏模型贴图规划

游戏美术革命&#xff1a;用MaterialIDsRandomGenerator实现材质ID智能分配 在独立游戏开发中&#xff0c;一把生锈的骑士剑模型正静静躺在3dMax视口中。它的剑刃需要金属质感&#xff0c;剑柄需要皮革纹理&#xff0c;护手部分则需要复杂的雕花细节。传统工作流程中&#xff0…...

告别JNI内存泄漏:实战中那些容易踩坑的字符串与数组操作(附完整代码示例)

告别JNI内存泄漏&#xff1a;实战中那些容易踩坑的字符串与数组操作&#xff08;附完整代码示例&#xff09; 在Android NDK开发和高性能Java服务中&#xff0c;JNI&#xff08;Java Native Interface&#xff09;作为连接Java与C的桥梁&#xff0c;其重要性不言而喻。然而&…...