ثلاث منصات
مشروع لجعل ثلاثة منصة
ستستمر الصيانة اللاحقة على المنصة
- تم تكييفه حاليًا مع برامج WeChat وTaobao وByte المصغرة
- دعم اهتزاز الشجرة (يتطلب حزمة الويب ومجموعة التحديثات وأدوات البناء الأخرى)
- تعد أنواع VSCode عادية ويمكن الوصول إلى تعريفات كل فئة بشكل طبيعي.
- التكيف مع example/jsm/**/*.js، النوع عادي
- يمكن ترقية الإصدار أو تقليله أو استخدام ثلاثة مخصصة
- تحسين ذاكرة برنامج WeChat mini IOS، وتقليل الأعطال الناجمة عن تبديل الصفحات
- يدعم تكييف النظام الأساسي الجديد المخصص، ما عليك سوى الرجوع إلى WechatPlatform لكتابة المحول
- يدعم برنامج Wechat ثلاثي المنصات إعادة استخدام المكونات الإضافية لـ WeChat
الرعاة الخاصون
Yuntu 3D-Online برنامج تصميم CAD ثلاثي الأبعاد | أوبورن فيوتشر هي شركة رائدة في مجال AR/VR |
|
حالة التكيف
| وي شات | تاوباو | بايت |
---|
برنامج صغير آلة حقيقية | ✔️ | ✔️ | ✔️ |
برنامج محاكاة مصغرة | ✔️ | ✔️ | |
لعبة صغيرة آلة حقيقية | ✔️ | | |
محاكاة لعبة صغيرة | ✔️ | | |
تقوم Auburn بتوظيف خوارزميات الواجهة الأمامية وWebGL والرسومات في المستقبل. فنحن نرحب بك لتقديم سيرتك الذاتية.
تجريبي
ملاحظة: عند تشغيل العرض التوضيحي، تذكر تشغيل وضع التصحيح، وإلغاء التحقق من اسم النطاق، واستخدام أحدث إصدار من أدوات تطوير WeChat لفتحه.
يوجد عرض توضيحي لاستخدام أداة التحميل المحددة في هذا المستودع ضمن العرض التجريبي ثلاثي المنصات
العرض التجريبي لبرنامج WeChat Mini النسخة الأساسية لبرنامج WeChat المصغر التجريبي النسخة التجريبية من لعبة WeChat المصغرة | العرض التوضيحي لبرنامج تاوباو المصغر | بايت التطبيق الصغير التجريبي |
---|
| | |
وحدة تم اختبارها
سمات
- VSMShadow (r131 والإصدارات السابقة على ما يرام، راجع لا يمكن مقارنة فهرس الحلقة بالتعبير غير الثابت)
محمل
- GLTFLoader (يدعم GLB المحكم) && (EXT_meshopt_compression، WASM متاح لنظام Android، إصدار ASM متاح لنظام iOS، راجع الأدوات) && (KHR_mesh_quantization، متاح للبرامج الصغيرة) [تقييم ضغط الشبكة] MeshQuan، MeshOpt، Draco (WebAssembly API غير متوفر أصبح متاحًا بعد WeChat 8.0 ويتطلب الاستخدام WXWebAssembly، ويدعم فقط Wasm الموجود في الحزمة. تمت إضافة Meshopt_decoder.wasm.module، راجع الاستخدام)
- TextureLoader
- RGBELoader & PMREMGenerator (قد تؤدي بعض نماذج البرنامج الصغير أحيانًا إلى إنشاء أخطاء envMap، والتي يمكن تجنبها باستخدام HDRPrefilter)
- SVGloader
- OBJLoader
- EXRLoader (يحتاج إلى دعم ملحق OES_texture_float_linear، وبعض وحدات معالجة الرسومات المحمولة لا تدعمه)
- MTLLoader (يمكن للتطبيق الصغير استخدام نسيج JPG)
- DDSLoader (يحتاج إلى دعم ملحق WEBGL_compressed_texture_s3tc، غير مدعوم بواسطة GPU المحمول)
- LWOLoader (يحتاج إلى دعم ملحق EXT_blend_minmax، حيث يتم رسم نصف تأثيرات البرنامج المصغر بشكل غير صحيح)
- com.FBXLloader
- BVHLloader
- ColladaLoader (لم يتم تعديل DOMParser querySelector)
- TTFLoader
- STLLloader
- PDBLloader
- TGALoader (استخدم DataTextureLoader بدلاً من دمج PR، يتوفر r127)
- VTKLoader
الضوابط
- أدوات التحكم في المدارات وعناصر التحكم في الخرائط
- DeviceOrientationControls (onDeviceMotionChange ضمن برامج WeChat وTaobao المصغرة، جودة البيانات التي يتم إرجاعها لنظام Android منخفضة للغاية وغير قابلة للاستخدام بشكل أساسي. لقد ظلت تعليقات المجتمع على الأخطاء لأكثر من 3 سنوات، وليس لدى المسؤول أي نية لإصلاحها)
الوحدات غير مدعومة
- ImageBitmapLoader (برنامج WeChat لا يفتح ImageBitmap)
أدوات
- التخلص من ثلاثة (تدمير العقدة
- الوجه (لقطة الشاشة تتطلب flipY
- لقطة شاشة
- worker-pool.module (لم يتم تكييفه بعد مع تطبيق WeChat الصغير
- zstddec.worker.module (لم يتم تكييفه بعد مع تطبيق WeChat الصغير
- zstddec.module (لم يتم تكييفه بعد مع تطبيق WeChat الصغير
- toEnvMap (للتصفية المسبقة لـ HDR
- Meshopt_decoder.asm.module (متوفر في تطبيق WeChat الصغير
- Meshopt_decoder.wasm.module (متوفر في تطبيق WeChat الصغير
ملحقات
- GLTFGPUCompressedTexture (بديل لـ BasisTextureLoader) يتم الحصول على أداة الإنشاء من خلال gltf-gpu-compressed-texture (لم يتم تكييفها بعد مع تطبيق WeChat الصغير
يستخدم
import * as THREE from 'three-platformize' ;
import WechatPlatform from 'three-platformize/src/WechatPlatform' ;
const platform = new WechatPlatform ( canvas ) ; // webgl canvas
platform . enableDeviceOrientation ( 'game' ) ; // 开启DeviceOrientation
THREE . PLATFORM . set ( platform ) ;
// 使用完毕后释放资源
THREE . PLATFORM . dispose ( ) ;
// 正常使用three即可
// DEMO 代码示例见 https://github.com/deepkolos/three-platformize-demo
// 基础的使用DEMO见 https://github.com/deepkolos/three-platformize-demo-wechat-simple
// 生产环境时rollup.config.js里请开启teser压缩, 即plugins末尾增加 terser({ output: { comments: false } })
خبرة
- لا يدعم تطبيق WeChat الصغير الصور المزخرفة فوق 2048
- توجد مشكلة في برنامج Taobao الذي يعرض أنسجة بتنسيق RGB (JPG). بعد تحميل النسيج من خلال TextureLoader، قم بتعيين Texture.format على RGBAFromat (إصدار Taobao 9.20.0). يؤدي إلى تغيير التنسيق من RGB إلى RGBA
- لا يمكن لـ r126 تعيين نسبة البكسل الكاملة، ويمكن ضبطها على النصف أو 2 وليس 3
- على الرغم من أنه يدعم تحميل GLB، إلا أنه يتم تحويل الصورة إلى base64 باستخدام إصدار js من ArrayBuffer، وهو ما يستغرق وقتًا طويلاً ويستهلك الذاكرة، على الرغم من أنه يمكن تخفيفه بواسطة برنامج تشفير Wasm (https://github.com/marcosc90/encoding-). Wasm)، لا يقوم Wasm بمعالجة السلاسل، والأداء ليس جيدًا مثل JS، وقد تم اختباره باستخدام Wasm المترجم باستخدام AssemblyScript
- يمكن أن يؤدي تعطل نظام التشغيل IOS قبل وبعد الدخول إلى الصفحة والخروج منها إلى تقليل نسبة البكسل وتخفيفها
- لا يدعم IOS WeChat readPixels الصقل. إذا كان المخزن المؤقت لللوحة المباشرة يحتاج إلى إيقاف الصقل (الصقل: خطأ)، فيمكن أيضًا تشغيل WebglRenderTarget، ولكن حجم النسيج محدود (عرض/ارتفاع النسيج في هاتف Xiaomi 8 لا يمكن أن يتجاوز 4096، عليك الانتباه إلى setSize أولاً، ثم setPixelRatio) (للحصول على عرض توضيحي للشاشة، راجع العرض التوضيحي لبرنامج WeChat الصغير)
- يحتوي برنامج Taobao mini على تحقق صارم من اسم النطاق ويمكنه استخدام التخزين السحابي لتخزين النماذج، ومع ذلك، إذا كان النموذج والملمس منفصلين، فمن المستحسن ربط GLB.
- يمكن لـ polyfill لعنوان URL استخدام fileSystemManager للحصول على الملفات المؤقتة لتجنب تحويل arraybuffer إلى base64، ولكنه يتطلب إدارة يدوية للملفات المؤقتة.
- أبلغ بعض الطلاب في مجموعة QQ أن مسار الملف النموذجي على تطبيق iOS Taobao الصغير لا يدعم اللغة الصينية.
ينجز
استبدال استدعاءات واجهة برمجة التطبيقات الخاصة بالنظام الأساسي في وقت الإنشاء، وإعادة توجيه المراجع إلى PLATFORM، والتحديث عبر PLATFORM.set
يحافظ على
كيفية تحديث/تخفيض الإصدار الثالث؟
# 拉取源码
> git clone https://github.com/deepkolos/three-platformize
# 安装依赖
> npm i
# 更新到最新的three版本
> npm i -S three@latest
# 或者指定three版本
> npm i -S [email protected]
# 需要把目标three的构建`utils/build/rollup.config.js`同步到本项目的构建`config/rollup.config.three-origin.js`
# 建立软链接
> npm run link
# 构建
> npm run build
# 使用
> npm link
# 到使用的项目目录,并链接
> cd your-project
> npm link three-platformize
# 或者自行发NPM包
كيفية تخصيص منصة ثلاثة؟
# 把自定义Three link 到./three
> npx symlink-dir yourthree ./three
# 不使用软链接直接复制或者git submodule也可以
> cp yourthree ./three
# 复制对应版本three构建配置替换到rollup.config.three-origin.js
> cp yourthree/utils/build/rollup.config.js ./config/rollup.config.three-origin.js
# 构建
> npm run build
كيف تكتب منصة مخصصة؟
يرجى الرجوع إلى src/WechatPlatform
أو src/TaobaoPlatform
class CustomPlatform {
getGlobals ( ) {
// 自定义的polyfill
return {
atob ,
Blob ,
window ,
document ,
XMLHttpRequest ,
OffscreenCanvas ,
HTMLCanvasElement ,
createImageBitmap ,
} ;
}
setWebGLExtensions ( ) {
return {
// 可覆盖gl返回值,比如淘宝小程序IOS返回值不为null,但是扩展不可用的bug
EXT_blend_minmax : null ,
} ;
}
dispose ( ) {
// 释放资源
}
}
المهام
- تخلص بشكل أكثر شمولاً، وقلل من تسرب الذاكرة، وأضيفت حالات اختبار الويب، وأضيف تطبيق WeChat الصغير، ولا يزال نظام IOS يعاني من مشاكل في الذاكرة، وستظل الصفحة تتعطل بعد التبديل عدة مرات، ويتم فتح طراز iPhone7 بحجم 3 ميجابايت 30 مرة
- التكيف مع التطبيق الصغير Toutiao القيام به
- قم بإنشاء المكونات الإضافية لـ WeChat، وحقق إعادة استخدام الأكواد الثلاثة عبر البرامج المصغرة وعبر المكونات الإضافية للبرامج الصغيرة من خلال المكونات الإضافية التي تم إجراؤها على ثلاثة منصات-plugin-wechat
- تم التكيف مع لعبة WeChat الصغيرة
- التكيف مع ReactNative
يناقش
يمكنك الاتصال بي من خلال مجموعة DeepKolos
سجل التغيير
راعي
إذا كان المشروع مفيدًا لك أو يحتاج إلى التكيف، فلا تتردد في تقديم الإكرامية.
شكرا لدعمكم ~~
وقت | رئيس |
---|
2021/11/10 | الله الله |
2021/09/27 | ابو |
2021/08/10 | مستقبل أوبورن |
2021/07/28 | لا شيء1ng |
2021/07/09 | مجهول |
2021/07/07 | سحابة CAD-ليو شين |
2021/06/23 | فونغ |
2021/06/23 | ليو زيكي |
2021/06/23 | جوسون |
2021/06/03 | بيونيك فولتير |
2021/04/28 | لا شيء1ng |