p5.js | loadModel()函数
loadModel()函数用于从文件加载 3d 模型,并将其作为 p5.Geometry 对象返回。此模型可以使用.obj
或.stl
格式加载。
加载的 OBJ 和 STL 文件没有任何比例感,因此可能需要使用归一化参数,以便模型自动缩放到正确的大小。加载模型后,可以使用 scale()函数进一步更改模型的大小。
此方法本质上是异步的,因此在模型可以使用之前它可能无法完成。因此建议在 preload()函数中加载模型。
句法:
loadModel( path, normalize, [successCallback], [failureCallback] )
或者
loadModel(path, [successCallback], [failureCallback])
参数:此函数接受上面提到的四个参数,如下所述:
- path:它是一个字符串,表示必须加载模型的路径。
- normalize:它是一个布尔值,用于确定加载的模型在加载时是否会缩放到标准化大小。它是一个可选参数。
- successCallback:这是一个在模型加载成功时调用的函数。加载的模型作为参数传递。它是一个可选参数。
- failureCallback:这是一个函数,如果模型由于任何错误而没有加载,则调用该函数。错误事件作为参数传递。它是一个可选参数。
返回值:它返回具有给定模型的 p5.Geometry 对象。
下面的程序说明了 p5.js 中的loadModel()函数:
示例 1:此示例显示了模型是如何在 preload()函数中加载的。
let newObj;
function preload() {
newObj = loadModel('models/ball.obj', true);
}
function setup() {
createCanvas(400, 300, WEBGL);
}
function draw() {
background('green');
rotateZ(frameCount * 0.01);
rotateX(frameCount * 0.01);
model(newObj);
}
输出:
示例 2:此示例显示了如何使用回调来加载和使用模型。
let newModel;
function setup() {
createCanvas(400, 300, WEBGL);
noLoop();
loadModel('models/ball.obj', true, modelLoaded, loadFailed);
}
function draw() {
background('green');
rotateZ(frameCount * 0.01);
rotateX(frameCount * 0.01);
model(newModel);
loop();
}
function modelLoaded(modelObj) {
newModel = modelObj;
loop();
}
function loadFailed(error) {
print("The model failed to load", error);
}
输出:
参考: https://p5js.org/reference/#/p5/loadModel