p5.js 3D模型(model)入门指南

点赞 + 关注 + 收藏 = 学会了

什么是 model ()?为什么需要它?

在 p5.js 中,model()是专门用来绘制 3D 模型的 "画笔"。它的作用很简单:把一个提前准备好的 3D 几何对象(p5.Geometry)画到画布上。

但有个关键前提:必须在 WebGL 模式下使用。因为 3D 绘图需要 WebGL 的 3D 渲染能力,普通 2D 画布(默认模式)不支持!

核心概念:p5.Geometry 对象

model()的参数必须是p5.Geometry类型 ------ 你可以把它理解为 "3D 模型的数字描述"(包含顶点、面、颜色等信息)。

怎么得到p5.Geometry?有两种方式:

  1. 自己创建 :用buildGeometry()或beginGeometry()+endGeometry()手动定义形状;
  2. 加载外部文件 :用loadModel()导入.obj 格式的 3D 模型文件(比如从 Blender 导出的模型)。

基础用法

步骤 1:创建 WebGL 画布

用createCanvas(width, height, WEBGL)开启 3D 模式:

js 复制代码
function setup() {
  createCanvas(400, 400, WEBGL); // 最后一个参数WEBGL是关键!
}

步骤 2:准备 p5.Geometry 对象

可以自己画一个简单形状,比如圆锥:

js 复制代码
let myModel; // 存储3D模型

function setup() {
  createCanvas(400, 400, WEBGL);
  // 用buildGeometry创建模型:传入一个画形状的函数
  myModel = buildGeometry(drawCone); 
}

// 定义要画的形状(这里画一个圆锥)
function drawCone() {
  cone(50, 100); // 圆锥:底面半径50,高100
}

步骤 3:用 model () 绘制

在draw()里调用model(你的模型)就能显示了:

js 复制代码
function draw() {
  background(200); // 灰色背景
  model(myModel); // 画出准备好的模型
}

完整代码

js 复制代码
let myModel; // 存储3D模型

function setup() {
  createCanvas(400, 400, WEBGL);
  // 用buildGeometry创建模型:传入一个画形状的函数
  myModel = buildGeometry(drawCone); 
}

// 定义要画的形状(这里画一个圆锥)
function drawCone() {
  cone(50, 100); // 圆锥:底面半径50,高100
}

function draw() {
  background(200); // 灰色背景
  model(myModel); // 画出准备好的模型
}

允许鼠标操作

orbitControl()是 3D 绘图的常用工具,让你能 360° 查看模型。

js 复制代码
function draw() {
  background(200); // 灰色背景
  orbitControl(); // 允许鼠标拖拽旋转视角(3D必备交互)
  model(myModel); // 画出准备好的模型
}

采用前面的代码,然后在 draw() 里加入一句 orbitControl() 即可。


以上就是本文的全部内容啦,想了解更多 P5.js 用法欢迎关注 《P5.js中文教程》。

可以➕我 green bubble 吹吹水咯

点赞 + 关注 + 收藏 = 学会了

相关推荐
拖孩16 分钟前
AI 帮我写的小程序「厨菜记」上线满月了,挣了两百块!!!
前端·后端·微信小程序
用户3600555790016 分钟前
Kestrel_VLLM - 13 · 为什么排除 MoE FFN Tiling 与 Tensor Core
前端
Hilaku26 分钟前
AI 流式输出都用 SSE,什么时候必须换 WebSocket?
前端·javascript·程序员
奇牙coding35 分钟前
Codex CLI 升级后多文件编辑静默失效:config.yaml 枚举变更排查与修复指南
java·前端·javascript·ai
小羊没烦恼!41 分钟前
Ajax与JSON的一些总结
android·java·前端·数据库·mysql·算法·okhttp
程序员老赵43 分钟前
Docker 部署 Filestash:轻松搭建浏览器文件管理平台
前端·docker·开源
夏天要喝冰可乐1 小时前
给 23 万字修仙小说造个阅读站:浏览器内打包 EPUB 分页阅读 + 三主题实战
前端·产品·全栈
茶底世界之下1 小时前
林间步道要不要加暗角?用 Awaking 把强度收在20%
前端·ios·图片资源
执子念的飞鱼1 小时前
纯前端预览 275 种文件格式是怎么做到的
前端·vue.js·react.js
行者全栈架构师1 小时前
【鸿蒙心迹】互动卡片全链路——把核心功能放到桌面(FormKit 实战)(HarmonyOS 7.x)
前端·算法·架构