Начало
Для загрузки obj-файла извне необходимо совсем мало кода:
var req:URLRequest = new URLRequest("http://имя_домена/test/models/p.obj");
req.method = URLRequestMethod.POST;
var load:URLLoader = new URLLoader();
load.addEventListener(Event.COMPLETE, completeHandler);
try {
load.load(req);
}catch (err:Error) {
trace(err.message);
}
и:
private function completeHandler(event:Event):void {
trace(event.target.data);
}
В event.target.data возвращается содержимое файла.
Ну и, собственно, парсинг:
Сначала необходимо убрать из текста лишние знаки '\r' (так как разбиение строк идет по '\n').
var data=event.target.data.replace(/\r/g, "");
Продолжение
Для загрузки obj-файла извне необходимо совсем мало кода:
var req:URLRequest = new URLRequest("http://имя_домена/test/models/p.obj");
req.method = URLRequestMethod.POST;
var load:URLLoader = new URLLoader();
load.addEventListener(Event.COMPLETE, completeHandler);
try {
load.load(req);
}catch (err:Error) {
trace(err.message);
}
и:
private function completeHandler(event:Event):void {
trace(event.target.data);
В event.target.data возвращается содержимое файла.
Ну и, собственно, парсинг:
Сначала необходимо убрать из текста лишние знаки '\r' (так как разбиение строк идет по '\n').
var data=event.target.data.replace(/\r/g, "");
Затем разбить на строки, а каждую строку на слова, разделенные пробелами и т.д.
var line, lspl;
var lines = data.split("\n");
var lineCount = lines.length;
var i;
for(i = 0; i < lineCount; i++) {
line = lines[i].replace(/\s+$/g, "");
if(line.length > 0 && line[0] != '#') {
lspl = line.split(/\s+/g);
switch(lspl[0]) {
case 'v':
x = parseFloat(lspl[1]);
y = parseFloat(lspl[2]);
z = parseFloat(lspl[3]);
_pts.push(new Point3D(x, y, z));
break;
case 'g':
case 'o':
o = new Object3D(lspl[1]);
o.id = _childs.length;
_childs.push(o);
break;
case 'f':
var tface = new Face();
var fvl = lspl.length;
for(var j = 1; j < fvl; j++) {
var sub = lspl[j].split('/');
tface.add(_pts[parseInt(sub[0]) - 1]);
}
tface.init();
o.add(tface);
break;
}
}
}
var lineCount = lines.length;
var i;
for(i = 0; i < lineCount; i++) {
line = lines[i].replace(/\s+$/g, "");
if(line.length > 0 && line[0] != '#') {
lspl = line.split(/\s+/g);
switch(lspl[0]) {
case 'v':
x = parseFloat(lspl[1]);
y = parseFloat(lspl[2]);
z = parseFloat(lspl[3]);
_pts.push(new Point3D(x, y, z));
break;
case 'g':
case 'o':
o = new Object3D(lspl[1]);
o.id = _childs.length;
_childs.push(o);
break;
case 'f':
var tface = new Face();
var fvl = lspl.length;
for(var j = 1; j < fvl; j++) {
var sub = lspl[j].split('/');
tface.add(_pts[parseInt(sub[0]) - 1]);
}
tface.init();
o.add(tface);
break;
}
}
}
P.S. Нашел один из вариантов бесплатного хостинга - размещать js файлы на http://sites.google.com/
Так что скоро выложу пример с 3D.Продолжение
Комментариев нет:
Отправить комментарий