シンプルな WebGL プロジェクトを作成していて、モデルをロードする方法が必要です。私は OBJ 形式を使用することにしたので、それをロードする方法が必要です。ファイルは (これから) サーバーに保存されます。私の質問は、JS でテキスト ファイルをロードして 1 行ずつスキャンする方法です。トークンごとに (C++ のストリームのように)? 私はJSが初めてなので、質問です。簡単な方法ほど良いです。
更新: 私はあなたの解決策、broofa を使用しましたが、それが正しいかどうかはわかりません。あなたが書いたforEachループのファイルからデータをロードしますが、その外側(つまり、すべてのコードの後)でデータを埋めてきたオブジェクトは「未定義」です。私は何を間違っていますか?コードは次のとおりです。
var materialFilename;
function loadOBJModel(filename)
{
// ...
var req = new XMLHttpRequest();
req.open('GET', filename);
req.responseType = 'text';
req.onreadystatechange = function()
{
if (req.readyState == 4)
{
var lines = req.responseText.split(/\n/g);
lines.forEach(function(line)
{
readLine(line);
});
}
}
req.send();
alert(materialFilename);
// ...
}
function readLine(line)
{
// ...
else if (tokens[0] == "mtllib")
{
materialFilename = tokens[1];
}
// ...
}