簡體   English   中英

從數據庫加載 3d 模型並在 Three.js 中使用它

[英]Loading a 3d model from DB and using it in Three.js

現在我的任務是從 MySQL 數據庫加載 3d 模型並在 Three.js 中使用它。

這是我所做的,

我創建了一個這樣的數據庫

models{model_id int(4), model mediumblob};

我可以成功地從數據庫加載 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 );
    }
);

這是 Three.js 文檔中的示例代碼。

資源 URL 似乎是一個物理位於根目錄中的文件。 但我想不通“如何將從數據庫獲得的模型加載到 Three.js?”

我不要求任何代碼。

直接指導我在 Three.js 中加載文件

我熟悉加載一個簡單的圖像。 但這是面向 html 的。 這是面向 Three.js 的。

看着我需要我的 PHP 頁面來顯示來自 mysql 數據庫的我的 BLOB 圖像我會嘗試使用: <img src="image.php?id=<?php echo $image_id; ?>" />行並使用src屬性對於 js 加載器,因此在 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 );
}
);

然后是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']; } } 
?>

這是一個草圖,因為我的 php 不太好。 但最終,如果您還可以將 blob 文件的路徑存儲在您的 sql 中並為 loader 變量訪問該路徑,那將會容易得多。

看看 Three.js 加載器是否有一個你使用的 parse 函數而不是 load 函數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM