从数据库加载 3d 模型并在 Three.js 中使用它

Yas*_* CB 5 javascript php three.js

现在我的任务是从 MySQL 数据库加载 3d 模型并在 Three.js 中使用它。

这是我所做的,

我创建了一个这样的数据库

models{model_id int(4), model mediumblob};
Run Code Online (Sandbox Code Playgroud)

我可以成功地从数据库加载 JSON 格式的 3d 模型。

我知道如何从数据库检索数据。

但我的问题是 - “我如何制作从数据库加载的 JSON 文件以供 Three.js 使用?”

我像这样按常规加载 Json 文件

// instantiate a loader
var loader = new THREE.JSONLoader();

    // load a resource
    loader.load(
    // resource URL
    'models/animated/monster/monster.js',
    // Function when resource is loaded
    function ( geometry, materials ) {
        var material = new THREE.MultiMaterial( materials );
        var object = new THREE.Mesh( geometry, material );
        scene.add( object );
    }
);
Run Code Online (Sandbox Code Playgroud)

这是 Three.js 文档中的示例代码。

资源 URL 似乎是一个物理位于根目录中的文件。但我想不通“如何将从数据库获得的模型加载到 Three.js?”

我不要求任何代码。

直接指导我在 Three.js 中加载文件

我熟悉加载一个简单的图像。但这是面向 html 的。这是面向 Three.js 的。

小智 1

看看我需要我的 PHP 页面来显示来自 mysql 数据库的 BLOB 图像,我会尝试使用 : <img src="image.php?id=<?php echo $image_id; ?>" />行并使用srcjs 加载器的属性,因此在 js 中(我假设它通过 html 在网页上工作)类似:

js:

// set up a path variable
var filed = 'model.php?id=<?php echo $sql_id; ?>'

// instantiate a loader

var loader = new THREE.JSONLoader();
// load a resource
loader.load(
// resource URL location
filed,
// Function when resource is loaded
function ( geometry, materials ) {
    var material = new THREE.MultiMaterial( materials );
    var object = new THREE.Mesh( geometry, material );
    scene.add( object );
}
);
Run Code Online (Sandbox Code Playgroud)

然后是 php:

<?php
function load() { $sql = "SELECT model FROM ovf_items_cycles"; if(!$res = $_ENV['db']->query($sql)) { echo ' failed to operate'; } while($row = $res->fetch_assoc() ) { echo $row['pid'] . ' ' . $row['modeldata']; } } 
?>
Run Code Online (Sandbox Code Playgroud)

这是一个草图,因为我的 php 不太好。但最终,如果您还可以将 blob 文件的路径存储在 sql 中并通过加载器变量访问该路径,那么最终会容易得多。