2016-09-25 2 views
1

теперь моя задача - загрузить 3d-модель из базы данных MySQL и использовать ее в Three.js.Загрузка 3d модели из БД и ее использование в Three.js

Вот что я сделал,

я создал базу данных, как этот

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

Я могу успешно загрузить 3d модели в формате JSON и из базы данных.

Я знаю, как извлечь данные из БД.

Но моя проблема в том, что: «Как создать файл 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.

+0

путь к файлу 'monster.js' относительно файла demo.html, в котором он запущен. Поэтому, если вы знакомы с загрузкой файлов изображений, вы просто используете одну и ту же структуру пути. например, если вы загружаете файл изображения в ваш загрузчик, но сгенерированный путь указывает на 3d модель json. – Sam0

+0

Я не использую путь для загрузки изображения. его из базы данных. на самом деле я бы запросил данные изображения. Но можете ли вы привести пример загрузки json с помощью JSONLoader? –

+0

Средняя строка в примере кода из документа Three.JS. ''models/animated/monster/monster.js',' просто замените этот путь полным путем для вашей 3d модели. Длина и структура пути должны быть такими же, как если бы вы загрузили файл изображения. – Sam0

ответ

0

Глядя на I need my PHP page to show my BLOB image from mysql database Я хотел бы попробовать принимать : линии <img src="image.php?id=<?php echo $image_id; ?>" /> и с помощью атрибута src для Js погрузчиком так в JS (я предполагаю, что он работает на веб-странице с помощью HTML) что-то вроде:

ЯШ:

// 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']; } } 
?> 

Th это эскиз, так как мой php не так хорош. Но в конечном итоге было бы намного проще, если бы вы могли также сохранить путь к файлу blob в вашем sql и получить доступ к переменной загрузчика.

+0

i думаю, я получаю это .. Позволь мне сделать мои руки грязными .. Я отправлю свой прогресс завтра .. Так что будь со мной приятелем .. Спасибо .. –

+0

ли file_id должен содержать объект Json? –

+0

мой php не очень хорош, но, возможно, вы можете изменить 'file_id' как свою' modeldata', но на самом деле вам следует искать путь к модели. В противном случае, я думаю, вы удвоите данные модели (один раз в пространстве страниц, а затем снова, когда Три загрузите его), что приведет к проблемам. Используйте переменную 'filed', чтобы показать три, где находится файл, а не содержать содержимое файла. – Sam0

Смежные вопросы