يبدو النمط الحالي في GLTF2Loader كما يلي:
class GLTF2Parser {
loadMeshes () {
return this._withDependencies( [
'materials',
'accessors'
] ).then( ( dependencies ) => {
_each( json.meshes, ( meshDef ) => {
var geometry = /* ... */;
var material = dependencies.materials[ meshDef.material ];
var mesh = new THREE.Mesh( geometry, material );
// ...
return mesh;
} );
// ...
return meshes;
} );
}
// ...
}
نتيجة لذلك ، سيتم تحميل جميع الموصّلات (التي تعتمد بدورها على جميع ملفات المخزن المؤقت .bin
) قبل إنشاء أي شبكات. هذا يقدم مشكلة ، إذا لم تكن هناك حاجة بالفعل إلى جميع المخازن المؤقتة. على سبيل المثال:
.bin
، و .bin
غير مضغوط ، بحيث لا يزال بإمكان العملاء الذين لا يدعمون Draco الرجوع إلى الإصدار غير الأمثل. في كلتا الحالتين ، نريد تحميل واحد فقط من المخازن المؤقتة.لذلك ، أعتقد أنه قد يكون من الضروري إعادة هيكلة GLTF2Loader لطلب التبعيات من أعلى إلى أسفل. سيكون بناء الجملة المقترح (ما لم تكن هناك أمثلة حالية جيدة لتقليدها) شيئًا من هذا القبيل:
class GLTF2Parser {
loadMesh ( meshDef ) {
return Promise.all( [
this.loadGeometry( meshDef.primitives ),
this.loadMaterial( meshDef.material )
] ).then( ( dependencies ) => {
var [geometry, material] = dependencies;
var mesh new THREE.Mesh( geometry, material );
// ...
return mesh;
} );
}
// ...
}
^ استخدام ES6 للإيجاز ، على الرغم من أنه من المفترض أنه لا يمكن التحقق من الأمثلة / js.
قبل الشروع في رحلة إعادة الهيكلة ، هل هناك أي تفضيلات قوية حول كيفية عمل ذلك؟ آمل ، ولكن سأحتاج إلى التحقق ، أن هذا التغيير يمكن أن يحدث بشكل تدريجي.
/ cc تكاهيروكس
أنا أتفق مع إعادة بناء ديون.
IMO مجموعة _withDependencies
و _each
معقدة بعض الشيء.
راجع للشغل ، mrdoob هل تسمح لنا باستخدام Promise
و ES6؟
أعتقد أنه من الجيد التخلص من Internet Explorer من أجل الحصول على رمز يمكن التحكم فيه لتحميل gltf 👌
لذا فإن Promise
s رائع. ES6 ... يعتمد على الميزة وتوافق المستعرض.
شكرا @ تكاهيروكس لإعادة بيع
أعتقد أنه يمكن إغلاق هذا. بعض الأجزاء ليست من أعلى إلى أسفل بشكل صارم - بالنسبة لنموذج ذي مشاهد متعددة ، قد نرغب يومًا ما في عدم استرداد عقد أو موصّلات عبر getMultiDependencies()
. لكن بالنسبة لجميع النماذج النموذجية التي رأيتها حتى الآن ، فإن الهيكل الحالي يبدو أفضل بكثير.
التعليق الأكثر فائدة
أعتقد أنه من الجيد التخلص من Internet Explorer من أجل الحصول على رمز يمكن التحكم فيه لتحميل gltf 👌
لذا فإن
Promise
s رائع. ES6 ... يعتمد على الميزة وتوافق المستعرض.