Javascript 从DB加载3d模型并在Three.js中使用

Javascript 从DB加载3d模型并在Three.js中使用,javascript,php,three.js,Javascript,Php,Three.js,现在我的任务是从MySQL数据库加载一个3d模型,并在Three.js中使用它 这就是我所做的 我创建了一个这样的数据库 models{model_id int(4), model mediumblob}; // instantiate a loader var loader = new THREE.JSONLoader(); // load a resource loader.load( // resource URL 'models/animated/mo

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

这就是我所做的

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

models{model_id int(4), model mediumblob};
// 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 );
    }
);
我可以成功地将JSON格式的3d模型加载到数据库中,也可以从数据库中加载

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

但我的问题是-'如何使从DB加载的JSON文件供Three.js使用?'

我按照惯例像这样加载Json文件

models{model_id int(4), model mediumblob};
// 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的。这是面向3.js的

看着你,我会试着 :
“/>
行,并使用js加载程序的
src
属性,因此在js中(我假设它通过html在网页上工作),类似于:

js:

//设置路径变量
var field='model.php?id='
//实例化加载程序
var loader=new THREE.JSONLoader();
//加载资源
装载机(
//资源URL位置
提出,
//加载资源时的函数
功能(几何、材料){
var物料=新的三种。多物料(物料);
var对象=新的三个网格(几何体、材质);
场景。添加(对象);
}
);
然后是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不太好。但如果您还可以在sql中存储blob文件的路径,并访问loader变量的路径,那么最终会容易得多。

看看Three.js loader是否有一个解析函数,您可以使用它来代替load函数。

monster.js文件路径是相对于de的正在运行的mo.html文件。因此,如果您熟悉加载图像文件,您只需使用相同的路径结构。例如,就像您正在将图像文件加载到加载程序中,但生成的路径指向3d模型json。我不使用路径加载图像。它来自数据库。实际上,我会查询图像数据。但您能给我一个使用JSONLoader加载json的示例?Three.JS文档中示例代码的中间行。
'models/animated/monster/monster.JS',
只需将此路径替换为3d模型的完整路径。路径长度和结构应与加载图像文件相同。但感谢您的replyfunction load(){$sql=“从
ovf_items_cycles中选择模型”
“如果(!$res=$$u ENV['db']->查询($sql)){echo'无法操作“;}而($row=$res->fetch_assoc()){echo$row['pid'].$row['pname'];}我想我明白了..让我把手弄脏..我明天会发布我的进度..所以和我在一起吧伙计..谢谢..文件id是否应该包含Json对象..我的php不太好,但也许你可以将
文件id
更改为你的
模型数据
,但你真的应该查找模型的路径位置。否则我认为您将加倍模型数据(一次在页面空间,然后在三个加载它时再次),这将导致问题。使用
field
变量显示三个文件的位置,而不是保存文件的内容。