提交 7eb8f52a 编写于 作者: wanhai_wu's avatar wanhai_wu

add

上级 079aaea0
流水线 #81 已失败 ,包含阶段

要显示的变更太多。

为了保持性能,仅显示文件中的 1000/1000+

# 默认忽略的文件
/shelf/
/workspace.xml
# 基于编辑器的 HTTP 客户端请求
/httpRequests/
<?xml version="1.0" encoding="UTF-8"?>
<module type="WEB_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$">
<excludeFolder url="file://$MODULE_DIR$/.tmp" />
<excludeFolder url="file://$MODULE_DIR$/temp" />
<excludeFolder url="file://$MODULE_DIR$/tmp" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/gest-three-view.iml" filepath="$PROJECT_DIR$/.idea/gest-three-view.iml" />
</modules>
</component>
</project>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" />
</component>
</project>
\ No newline at end of file
The MIT License
Copyright © 2010-2023 three.js authors
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Contributing to the documentation
=================================
- To link to the page for `ClassName`, use `[page:ClassName link title]` (or just `[page:ClassName]`). Use `[page:ClassName.memberName]` to link to a class member (a property or method) called `memberName` on the page for `ClassName`. You can write `[page:.memberName]` to link to a property or method called `memberName` on the same page.
- Use `[example:exampleName title]` (not just `[example:exampleName]`) to link to the example `threejs.org/examples/#exampleName`.
- Document a property by writing `<h3>[property:TypeName propertyName]</h3>`.
- Document a method using `<h3>[method:ReturnType methodName]</h3>`.
此差异已折叠。
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
AnimationClip عبارة عن مجموعة قابلة لإعادة الاستخدام من مسارات الإطارات الرئيسية التي تمثل رسمًا متحركًا.<br /><br />
للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Number duration], [param:Array tracks] )</h3>
<p>
[page:String name] - اسم لهذا المقطع.<br />
[page:Number duration] - مدة هذا المقطع (بالثواني). إذا تم تمرير قيمة سالبة ، فسيتم حساب المدة من *tracks* التي تم تمريرها.<br />
[page:Array tracks] - مجموعة (جدول) من [page:KeyframeTrack KeyframeTracks].<br /><br />
ملاحظة: بدلاً من إنشاء AnimationClip مباشرةً مع المُنشئ ، يمكنك استخدام إحدى طرقه الثابتة لإنشاء AnimationClips: من JSON ([page:.parse parse]) ، من تسلسلات الهدف التحويلية ([page:.CreateFromMorphTargetSequence CreateFromMorphTargetSequence] ،
[page:.CreateClipsFromMorphTargetSequences CreateClipsFromMorphTargetSequences]) أو من التسلسلات الهرمية للرسوم المتحركة ([page:.parseAnimation parseAnimation]) - إذا كان النموذج الخاص بك لا يحتوي بالفعل على AnimationClips في مجموعة الرسوم المتحركة الخاصة بهندسة.
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Number duration]</h3>
<p>
مدة هذا المقطع (بالثواني). يمكن حساب ذلك من مجموعة [page:.tracks tracks] عبر [page:.resetDuration resetDuration].
</p>
<h3>[property:String name]</h3>
<p>
اسم لهذا المقطع. يمكن البحث عن مقطع معين طريق بإستعمال [page:.findByName findByName].
</p>
<h3>[property:Array tracks]</h3>
<p>
جدول يحتوي على [page:KeyframeTrack] لكل خاصية يتم تحريكها بواسطة هذا المقطع.
</p>
<h3>[property:String uuid]</h3>
<p>
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] لهذا المقطع. يتم تعيينه تلقائيًا ولا يجب تحريره.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:AnimationClip clone]()</h3>
<p>
إرجاع نسخة من هذا المقطع.
</p>
<h3>[method:this optimize]()</h3>
<p>
يحسن من أداء كل مسار عن طريق إزالة المفاتيح المتسلسلة المتكررة (الشائعة في تسلسلات هدف التحويل - morph target sequences).
</p>
<h3>[method:this resetDuration]()</h3>
<p>
يضبط [page:.duration duration] للمقطع على أطول مدة [page:KeyframeTrack] ممكنة.
</p>
<h3>[method:Object toJSON]()</h3>
<p>
Returns a JSON object representing the serialized animation clip.
</p>
<h3>[method:this trim]()</h3>
<p>
اقتطاع كل المسارات حسب مدة المقطع.
</p>
<h3>[method:Boolean validate]()</h3>
<p>
يقوم بتأدية الحد الأدنى من التحقق من الصحة على كل مسار في المقطع. إرجاع *true* إذا كانت جميع المسارات صالحة.
</p>
<h2>الوظائف الساكنة (Static Methods)</h2>
<h3>[method:Array CreateClipsFromMorphTargetSequences]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
<p>
تُرجع مصفوفة من AnimationClips الجديدة التي تم إنشاؤها من morph target sequences من الشكل الهندسي ، في محاولة لفرز أسماء الأهداف التحويلية إلى أنماط قائمة على مجموعة الرسوم المتحركة مثل "Walk_001 ، Walk_002 ، Run_001 ، Run_002 ...".
</p>
<h3>[method:AnimationClip CreateFromMorphTargetSequence]( [param:String name], [param:Array morphTargetSequence], [param:Number fps], [param:Boolean noLoop] )</h3>
<p>
يُرجع مقطع رسوم متحركة جديدًا من morph targets array تم تمريره لشكل هندسي ، مع أخذ اسم وعدد الإطارات في الثانية.<br /><br />
ملاحظة: قيمة fps مطلوبة و ضرورية ، ولكن يمكن إعادة ضبظ سرعة الرسوم المتحركة في *AnimationAction* عبر [page:AnimationAction.setDuration animationAction.setDuration].
</p>
<h3>[method:AnimationClip findByName]( [param:Object objectOrClipArray], [param:String name] )</h3>
<p>
يبحث عن AnimationClip بالاسم ، مع الأخذ كقيمة إما مصفوفة من AnimationClips ، أو شبكة أو شكل هندسي يحتوي على جدول مسمى "animations".
</p>
<h3>[method:AnimationClip parse]( [param:Object json] )</h3>
<p>
يترجم تمثيل JSON لمقطع ويعيد AnimationClip.
</p>
<h3>[method:AnimationClip parseAnimation]( [param:Object animation], [param:Array bones] )</h3>
<p>
يوزع تنسيق animation.hierarchy ويعيد AnimationClip.
</p>
<h3>[method:Object toJSON]( [param:AnimationClip clip] )</h3>
<p>
يأخذ AnimationClip ويعيد كائن JSON.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
AnimationMixer هو مشغل للرسوم المتحركة على كائن معين في المشهد. عندما يتم تحريك كائنات متعددة في المشهد بشكل مستقل ، يمكن استخدام AnimationMixer واحد لكل كائن.<br /><br />
للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Object3D rootObject] )</h3>
<p>
[page:Object3D rootObject] - الكائن الذي سيتم تشغيل رسومه المتحركة بواسطة هذا الخالط.<br />
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Number time]</h3>
<p>
وقت الخالط الكامل (بالثواني ؛ بدءًا من 0 عند إنشاء الخالط).
</p>
<h3>[property:Number timeScale]</h3>
<p>
عامل تحجيم لـ [page:.time mixer time].<br /><br />
ملاحظة: يأدي ضبط مقياس وقت الخلاط على 0 والعودة لاحقًا إلى 1 إلى إمكانية إيقاف / إلغاء إيقاف مؤقت لجميع الإجراءات التي يتحكم فيها هذا الخالط.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:AnimationAction clipAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
<p>
إرجاع [page:AnimationAction] للمقطع الذي تم تمريره ، اختيارياً باستخدام كائن جذر مختلف عن الجذر الافتراضي لجهاز المزج. يمكن أن تكون القيمة الأولى إما كائن [page:AnimationClip] أو اسم AnimationClip.<br /><br />
إذا لم يكن هناك إجراء يلائم المقطع ومعلمات الجذر ، فسيتم إنشاؤه بهذه الطريقة. استدعاء هذه الطريقة عدة مرات مع نفس المقطع ومعلمات الجذر يؤدي دائمًا إلى إرجاع نفس مثيل المقطع.
</p>
<h3>[method:AnimationAction existingAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
<p>
إرجاع [page:AnimationAction] موجود للمقطع الذي تم تمريره ، اختيارياً باستخدام كائن جذر مختلف عن الجذر الافتراضي لجهاز الخالط.<br /><br />
يمكن أن تكون القيمة الأولى إما كائن [page:AnimationClip] أو اسم AnimationClip.
</p>
<h3>[method:Object3D getRoot]()</h3>
<p>
إرجاع جذركائن الخالط.
</p>
<h3>[method:this stopAllAction]()</h3>
<p>
يقوم بإلغاء تنشيط كافة الإجراءات المجدولة مسبقًا على هذا الخالط.
</p>
<h3>[method:this update]([param:Number deltaTimeInSeconds]) </h3>
<p>
يعمل على تقدم وقت الخالط العالمي وتحديث الرسوم المتحركة.<br /><br />
يتم ذلك عادةً في حلقة العرض ، حيث يتم تمرير [page:Clock.getDelta clock.getDelta] مقياسًا بواسطة جهاز الخلاط [page:.timeScale timeScale]).
</p>
<h3>[method:this setTime]([param:Number timeInSeconds]) </h3>
<p>
يضبط الخالط العام على وقت محدد ويقوم بتحديث الرسوم المتحركة وفقًا لذلك.<br /><br />
يكون هذا مفيدًا عندما تحتاج إلى الانتقال إلى وقت محدد في رسم متحرك. سيتم قياس القيمة المدخلة حسب مقياس الوقت لجهاز الخالط [page:.timeScale timeScale].
</p>
<h3>[method:undefined uncacheClip]([param:AnimationClip clip])</h3>
<p>
إلغاء تخصيص كل موارد الذاكرة لمقطع.
</p>
<h3>[method:undefined uncacheRoot]([param:Object3D root]) </h3>
<p>
إلغاء تخصيص كافة موارد الذاكرة لكائن جذر.
</p>
<h3>[method:undefined uncacheAction]([param:AnimationClip clip], [param:Object3D optionalRoot])</h3>
<p>
إلغاء تخصيص كل موارد الذاكرة لإجراء ما.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">مجموعة من الكائنات التي تتلقى حالة حركة مشتركة.<br /><br />
للحصول على نظرة عامة حول العناصر المختلفة لنظام الرسوم المتحركة three.js ، راجع مقالة "نظام الحركات" في قسم "الخطوات التالية" من الدليل.
</p>
<h2>الإستعمال:</h2>
<p class="desc">
تظيف كائنات يمكن تمريرها عبر المنشئ كـ'جذر' أو عبر وظيفة [page:AnimationMixer.clipAction clipAction] الخاصة بـ [page:AnimationMixer AnimationMixer] أو بدلا من دلك عبر تمرير هدا الكائن الأخير كـ'جذر'.<br /><br />
لاحظ أن كائنات هذه الفئة تظهر ككائن واحد للخالط ، لذا يجب التحكم في ذاكرة التخزين المؤقت للكائنات الفردية على المجموعة.
</p>
<h2>التقييدات (Limitations)</h2>
<p class="desc">
يجب أن تكون الخصائص المتحركة متوافقة مع جميع الكائنات في المجموعة.<br /><br />
يمكن التحكم في خاصية واحدة إما من خلال مجموعة مستهدفة أو بشكل مباشر ، ولكن ليس كلاهما.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
<p>
[page:Object obj] - عدد عشوائي من الشبكات التي تشترك في نفس حالة الحركة.
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Boolean isAnimationObjectGroup]</h3>
<p>
Read-only flag to check if a given object is of type [name].
</p>
<h3>[property:Object stats]</h3>
<p>
كائن يحتوي على بعض المعلومات حول *AnimationObjectGroup* (العدد الإجمالي ، العدد المستخدم ، عدد الروابط لكل كائن)
</p>
<h3>[property:String uuid]</h3>
<p>
[link:http://en.wikipedia.org/wiki/Universally_unique_identifier UUID] الخاص بهذا *AnimationObjectGroup*. يتم تعيينه تلقائيًا ولا يجب تحريره.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined add]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
<p>
يضيف عددًا عشوائيًا من الكائنات إلى *AnimationObjectGroup*.
</p>
<h3>[method:undefined remove]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
<p>
يزيل عددًا عشوائيًا من الكائنات من *AnimationObjectGroup*.
</p>
<h3>[method:undefined uncache]( [param:Object obj1], [param:Object obj2], [param:Object obj3], ... )</h3>
<p>
إلغاء تخصيص كافة موارد الذاكرة للكائنات التي تم تمريرها من *AnimationObjectGroup*.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
كائن مع وظائف مختلفة للمساعدة في الرسوم المتحركة ، ويستخدم داخليًا.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:Array arraySlice]( array, from, to )</h3>
<p>
نفسه عمل Array.prototype.slice ، ولكنه يعمل أيضًا على المصفوفات المكتوبة.
</p>
<h3>[method:Array convertArray]( array, type, forceClone )</h3>
<p>
يحول مصفوفة إلى نوع معين.
</p>
<h3>[method:Array flattenJSON]( jsonKeys, times, values, valuePropertyName )</h3>
<p>
تستخدم لتحليل تنسيقات AOS keyframe.
</p>
<h3>[method:Array getKeyframeOrder]( times )</h3>
<p>
تُرجع مصفوفة يمكن من خلالها فرز الأوقات والقيم.
</p>
<h3>[method:Boolean isTypedArray]( object )</h3>
<p>
ترجاع *true* إذا كان الكائن مصفوفة مكتوبة (typed array.).
</p>
<h3>[method:AnimationClip makeClipAdditive]( [param:AnimationClip targetClip], [param:Number referenceFrame], [param:AnimationClip referenceClip], [param:Number fps] )</h3>
<p>
Converts the keyframes of the given animation clip to an additive format.
</p>
<h3>[method:Array sortedArray]( values, stride, order )</h3>
<p>
يفرز المصفوفة التي تم إرجاعها مسبقًا بناءا [page:AnimationUtils.getKeyframeOrder getKeyframeOrder].
</p>
<h3>[method:AnimationClip subclip]( [param:AnimationClip clip], [param:String name], [param:Number startFrame], [param:Number endFrame], [param:Number fps] )</h3>
<p>
ينشئ مقطعًا جديدًا ، يحتوي فقط على جزء من المقطع الأصلي بين الإطارات المحددة.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
此差异已折叠。
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
هذا يشير إلى الممتلكات الموجودة في الرسم البياني للمشهد ؛ تستخدم داخليا.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Object3D rootNode], path, parsedPath )</h3>
<p>
-- [page:Object3D rootNode]:
-- path
-- parsedPath (optional)
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Number path]</h3>
<p>
</p>
<h3>[property:Number parsedPath]</h3>
<p>
</p>
<h3>[property:Number node]</h3>
<p>
</p>
<h3>[property:Number rootNode]</h3>
<p>
</p>
<h3>[property:Object BindingType]</h3>
<p>
</p>
<h3>[property:Object Versioning]</h3>
<p>
</p>
<h3>[property:Array GetterByBindingType]</h3>
<p>
</p>
<h3>[property:Array SetterByBindingTypeAndVersioning]</h3>
<p>
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined getValue]( [param:Array targetArray], [param:Number offset] )</h3>
<p>
</p>
<h3>[method:undefined setValue]( [param:Array sourceArray], [param:Number offset] )</h3>
<p>
</p>
<h3>[method:undefined bind]( )</h3>
<p>
إنشاء زوج getter / setter لخاصية في الرسم البياني للمشهد. تستخدم داخليا من قبل
[page:PropertyBinding.getValue getValue] و [page:PropertyBinding.setValue setValue].
</p>
<h3>[method:undefined unbind]( )</h3>
<p>
تقوم بفك ربط زوج getter / setter لخاصية في الرسم البياني للمشهد.
</p>
<h3>[method:Constructor Composite]( targetGroup, path, optionalParsedPath )</h3>
<p>
قم بإنشاء مركب جديد PropertyBinding.
</p>
<h3>[method:Constructor create]( root, path, parsedPath )</h3>
<p>
تقوم بإنشاء رابط خاصية مركب جديد (إذا كان الجذر هو [page:AnimationObjectGroup) أو PropertyBinding.
</p>
<h3>[method:Constructor parseTrackName]( trackName )</h3>
<p>
يطابق الـ strings في الأشكال التالية:<br />
-- nodeName.property<br />
-- nodeName.property[accessor]<br />
-- nodeName.material.property[accessor]<br />
-- uuid.property[accessor]<br />
-- uuid.objectName[objectIndex].propertyName[propertyIndex]<br />
-- parentName/nodeName.property<br />
-- parentName/parentName/nodeName.property[index]<br />
-- .bone[Armature.DEF_cog].position<br />
-- scene:helium_balloon_model:helium_balloon_model.position
</p>
<h3>[method:Constructor findNode]( root, nodeName )</h3>
<p>
تبحث عن عقدة في شجرة العقدة أو [page:Skeleton Skeleton].
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
خاصية الرسم البياني للمشهد المخزنة التي تسمح بالتراكم الموزون ؛ تستخدم داخليا.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:PropertyBinding binding], [param:String typeName], [param:Number valueSize] )</h3>
<p>
-- binding <br />
-- typeName <br />
-- valueSize <br />
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:PropertyBinding binding]</h3>
<p>
</p>
<h3>[property:TypedArray buffer]</h3>
<p>
حاجز (buffer) بحجم [page:PropertyMixer valueSize] * 4. <br /><br />
هذا لديه التخطيط: [ incoming | accu0 | accu1 | orig ]<br /><br />
يمكن Interpolators استخدام .buffer كـ .result ثم تنتقل البيانات إلى "incoming". <br/>
يتم استخدام 'accu0' و 'accu1' مع ​​الإطارات المتداخلة للنتيجة التراكمية ويتم مقارنتها لاكتشاف التغييرات. يقوم "orig" بتخزين الحالة الأصلية للممتلكات.
</p>
<h3>[property:Number cumulativeWeight]</h3>
<p>
الافتراضي هو *0*.
</p>
<h3>[property:Number valueSize]</h3>
<p>
</p>
<h3>[property:Number referenceCount]</h3>
<p>
الافتراضي هو *0*.
</p>
<h3>[property:Number useCount]</h3>
<p>
الافتراضي هو *0*.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined accumulate]( [param:Number accuIndex], [param:Number weight] )</h3>
<p>
تجميع البيانات في [page:PropertyMixer.buffer buffer][accuIndex] منطقة 'incoming' في 'accu[i]'.<br />
إذا كان الوزن *0* فهذا لا يفعل شيئًا.
</p>
<h3>[method:undefined apply]( [param:Number accuIndex] )</h3>
<p>
تطبيق حالة [page:PropertyMixer.buffer buffer] 'accu[i]' على الربط عند اختلاف الاتهام.
</p>
<h3>[method:undefined saveOriginalState]( )</h3>
<p>
تذكر حالة الملكية المقيدة وتنسخها إلى كلا المتهمين.
</p>
<h3>[method:undefined restoreOriginalState]( )</h3>
<p>
تقوم بتطبيق الحالة التي تم التقاطها مسبقًا عبر 'saveOriginalState' إلى binding.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:KeyframeTrack] &rarr;
<h1>[name]</h1>
<p class="desc">
تتبع للقيمة الخاصة بـ*boolean keyframe*.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
<p>
[page:String name] - (ضرورية) المعرف الخاص بـ*KeyframeTrack*.<br />
[page:Array times] - (ضرورية) جدول يتضمن مجموعة من الـ*keyframe times*.<br />
[page:Array values] - القيم الخاصة بـ *keyframes* في وقت محدد لها.<br />
</p>
<h2>الخصائص (Properties)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[property:Constant DefaultInterpolation]</h3>
<p>
الـ*interpolation* الإفتراضي للإستعمال، [page:Animation InterpolateDiscrete].
</p>
<h3>[property:Array ValueBufferType]</h3>
<p>
جدول عادي (ليس *Float32Array* في هذه الحالة، ما عدى *ValueBufferType* الخاص بـ [page:KeyframeTrack]).
</p>
<h3>[property:String ValueTypeName]</h3>
<p>
String 'bool'.
</p>
<h2>الوظائف (Methods)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[method:undefined InterpolantFactoryMethodLinear ]()</h3>
<p>
قيمة هذه الوضيفة هي 'undefined'، حيث أنه لا يوجد سبب لإستعمالها على الخصائص المتفردة.
</p>
<h3>[method:undefined InterpolantFactoryMethodSmooth ]()</h3>
<p>
قيمة هذه الوضيفة هي 'undefined'، حيث أنه لا يوجد سبب لإستعمالها على الخصائص المتفردة.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:KeyframeTrack] &rarr;
<h1>[name]</h1>
<p class="desc">
تتبع للقيم التابعة لـ*keyframe* التي تمثل تغيرات لون ما.<br /><br />
التنفيذ الأساسي لهذه الفئة الفرعية فلا يوجد أي شيء خاص حتى الآن. ومع ذلك ، هذا هو المكان المناسب لوضع معلمات مساحة اللون.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
<p>
[page:String name] - (ضرورية) المعرف الخاص بـ*KeyframeTrack*.<br />
[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
[page:Animation Animation Constants] للقيم الممكنة. الإفتراضي هو
[page:Animation InterpolateLinear].
</p>
<h2>الخصائص (Properties)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[property:String ValueTypeName]</h3>
<p>
String 'color'.
</p>
<h2>الوظائف (Methods)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:KeyframeTrack] &rarr;
<h1>[name]</h1>
<p class="desc">
تتبع للقيمة الرقمية الخاصة بـ*keyframe* ما.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
<p>
[page:String name] - (ضرورية) المعرف الخاص بالـ*KeyframeTrack*.<br />
[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
[page:Animation InterpolateLinear].
</p>
<h2>الخصائص (Properties)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[property:String ValueTypeName]</h3>
<p>
String 'number'.
</p>
<h2>الوظائف (Methods)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:KeyframeTrack] &rarr;
<h1>[name]</h1>
<p class="desc">
تتبع للقيمة الرقمية الخاصة بـإطار رباعي *quaternion keyframe*.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
<p>
[page:String name] (ضرورية) المعرف الخاص بالـ*KeyframeTrack*.<br />
[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
[page:Animation InterpolateLinear].
</p>
<h2>الخصائص (Properties)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[property:Constant DefaultInterpolation]</h3>
<p>
نوع الـ*interpolation* الافتراضي المراد استخدامه ،
</p>
<h3>[property:String ValueTypeName]</h3>
<p>
String 'quaternion'.
</p>
<h2>الوظائف (Methods)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[method:QuaternionLinearInterpolant InterpolantFactoryMethodLinear]()</h3>
<p>
إرجاع قيمة من نوع [page:QuaternionLinearInterpolant QuaternionLinearInterpolant] بناءا على
[page:KeyframeTrack.values values], [page:KeyframeTrack.times times] و
[page:KeyframeTrack.valueSize valueSize] التابعين لـ*keyframes*.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:KeyframeTrack] &rarr;
<h1>[name]</h1>
<p class="desc">
تتبع للقيم الخاصة بـ*string keyframe*.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
<p>
[page:String name] - (ضرورية) معرّف KeyframeTrack.<br />
[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
[page:Animation InterpolateDiscrete].
</p>
<h2>الخصائص (Properties)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[property:Constant DefaultInterpolation]</h3>
<p>
نوع الـ*interpolation* الافتراضي المراد استخدامه ، [page:Animation InterpolateDiscrete].
</p>
<h3>[property:Array ValueBufferType]</h3>
<p>
جدول (مصفوفة) عادي (ليس Float32Array في هذه الحالة، بخلاف *ValueBufferType* من [page:KeyframeTrack]).
</p>
<h3>[property:String ValueTypeName]</h3>
<p>
String 'string'.
</p>
<h2>الوظائف (Methods)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[method:undefined InterpolantFactoryMethodLinear]()</h3>
<p>
قيمة هذه الطريقة هنا 'undefined' ، لأنها لا معنى لها بالنسبة للخصائص المنفصلة.
</p>
<h3>[method:undefined InterpolantFactoryMethodSmooth]()</h3>
<p>
قيمة هذه الطريقة هنا 'undefined' ، لأنها لا معنى لها بالنسبة للخصائص المنفصلة.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:KeyframeTrack] &rarr;
<h1>[name]</h1>
<p class="desc">
تتبع للقيم الخاصة بـ*vector keyframe*.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:String name], [param:Array times], [param:Array values] )</h3>
<p>
[page:String name] - (ضرورية) معرّف KeyframeTrack.<br />
[page:Array times] - (ضرورية) جدول الأوقات الخاصة بـ*keyframe*.<br />
[page:Array values] - القيم الخاصة بالـ*keyframes* في وقت محدد.<br />
[page:Constant interpolation] - نوع الـ*interpolation* الذي يجب إستعماله. أنظر
[page:Animation Animation Constants] من أجل القيم المتاحة. الإفتراضي هو
[page:Animation InterpolateLinear].
</p>
<h2>الخصائص (Properties)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h3>[property:String ValueTypeName]</h3>
<p>
String 'vector'.
</p>
<h2>الوظائف (Methods)</h2>
<p class="desc">
أنظر [page:KeyframeTrack] من أجل الخصائص الموروثة
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr;
<h1>[name]</h1>
<p class="desc">
يقوم بإنشاء كائن صوتي غير موضعي (عام).<br /><br />
يستخدم هذا [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
</p>
<h2>مثال التعليمة البرمجية</h2>
<code>
// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );
// create a global audio source
const sound = new THREE.Audio( listener );
// load a sound and set it as the Audio object's buffer
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
sound.setBuffer( buffer );
sound.setLoop( true );
sound.setVolume( 0.5 );
sound.play();
});
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webaudio_sandbox webaudio / sandbox ]<br />
[example:webaudio_visualizer webaudio / visualizer ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:AudioListener listener] )</h3>
<p>
listener — (ضرورية) كائن [page:AudioListener AudioListener].
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Boolean autoplay]</h3>
<p>ما إذا كان سيتم بدء التشغيل تلقائيًا. الافتراضي هو *false*.</p>
<h3>[property:AudioContext context]</h3>
<p>الـ[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] من [page:AudioListener listener] المعطاة في المنشئ.</p>
<h3>[property:Number detune]</h3>
<p>تعديل درجة الصوت ، مقاسة بالسنت. +/- 100 نصف نغمة. +/- 1200 هو *octave*. الافتراضي هو *0*.</p>
<h3>[property:Array filters]</h3>
<p>Represents an array of [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioNode AudioNodes]. Can be used to apply a variety of low-order filters to create more complex sound effects.
In most cases, the array contains instances of [link:https://developer.mozilla.org/en-US/docs/Web/API/BiquadFilterNode BiquadFilterNodes]. Filters are set via [page:Audio.setFilter] or [page:Audio.setFilters].</p>
<h3>[property:GainNode gain]</h3>
<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode] تم إنشاؤه باستخدام [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain]().</p>
<h3>[property:Boolean hasPlaybackControl]</h3>
<p>ما إذا كان يمكن التحكم في التشغيل باستخدام طرق [page:Audio.play play]() و [page:Audio.pause pause]() وما إلى ذلك. الافتراضي هو *true*.</p>
<h3>[property:Boolean isPlaying]</h3>
<p>ما إذا كان الصوت قيد التشغيل حاليًا.</p>
<h3>[property:AudioListener listener]</h3>
<p>مرجع إلى كائن المستمع لهذا الصوت.</p>
<h3>[property:Number playbackRate]</h3>
<p>سرعة التشغيل. الافتراضي هو *1*.</p>
<h3>[property:Number offset]</h3>
<p>إزاحة للوقت الذي يجب أن يبدأ فيه التشغيل داخل المخزن المؤقت للصوت. مثل المعلمة *offset* لـ [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). القيمة الافتراضية هي *0*.</p>
<h3>[property:Number duration]</h3>
<p>يتجاوز مدة الصوت. مثل المعلمة *duration* لـ[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/start AudioBufferSourceNode.start](). الافتراضي هو *undefined* لتشغيل المخزن المؤقت بالكامل.</p>
<h3>[property:AudioNode source]</h3>
<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode AudioBufferSourceNode] تم إنشاؤها باستخدام [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createBufferSource AudioContext.createBufferSource]().</p>
<h3>[property:String sourceType]</h3>
<p>نوع مصدر الصوت. الافتراضي هو السلسلة 'empty'.</p>
<h3>[property:String type]</h3>
<p>سلسلة تشير إلى النوع ، مضبوطة على 'Audio'.</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:this connect]()</h3>
<p>
متصل بـ [page:Audio.source]. يستخدم هذا داخليًا عند التهيئة وعند ضبط / إزالة المرشحات.
</p>
<h3>[method:this disconnect]()</h3>
<p>
قطع الاتصال من [page:Audio.source]. يستخدم هذا داخليًا عند تعيين / إزالة المرشحات.
</p>
<h3>[method:BiquadFilterNode getFilter]()</h3>
<p>
إرجاع العنصر الأول من الجدول [page:Audio.filters filters].
</p>
<h3>[method:Array getFilters]()</h3>
<p>
تُرجع جدول (مصفوفة) [page:Audio.filters filters].
</p>
<h3>[method:Boolean getLoop]()</h3>
<p>
تقوم بإرجاع القيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] (ما إذا كان يجب تكرار التشغيل).
</p>
<h3>[method:GainNode getOutput]()</h3>
<p>
ترجع [page:Audio.gain gainNode].
</p>
<h3>[method:Float getPlaybackRate]()</h3>
<p>
ترجع القيمة الخاصة بـ[page:Audio.playbackRate playbackRate].
</p>
<h3>[method:Float getVolume]( value )</h3>
<p>
إعادة الحجم الحالي.
</p>
<h3>[method:this play]( delay )</h3>
<p>
إذا كانت [page:Audio.hasPlaybackControl hasPlaybackControl] تحمل قيمة *true* ، يبدأ التشغيل.
</p>
<h3>[method:this pause]()</h3>
<p>
إذا كانت [page:Audio.hasPlaybackControl hasPlaybackControl] تحمل قيمة *true* ، يقوم بإقاف التشغيل.
</p>
<h3>[method:undefined onEnded]()</h3>
<p>
يتم مناداته تلقائيًا عند انتهاء التشغيل.
</p>
<h3>[method:this setBuffer]( audioBuffer )</h3>
<p>
تقوم بإعداد [page:Audio.source source] إلى *audioBuffer* ، وتقوم بتعيين [page:Audio.sourceType sourceType] إلى 'buffer'.<br />
إذا كان [page:Audio.autoplay autoplay] ، يبدأ التشغيل أيضًا.
</p>
<h3>[method:this setFilter]( filter )</h3>
<p>
Applies a single filter node to the audio.
</p>
<h3>[method:this setFilters]( [param:Array value] )</h3>
<p>
value - arrays of filters.<br />
Applies an array of filter nodes to the audio.
</p>
<h3>[method:this setLoop]( [param:Boolean value] )</h3>
<p>
يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loop source.loop] على *value* (ما إذا كان يجب تكرار التشغيل).
</p>
<h3>[method:this setLoopStart]( [param:Float value] )</h3>
<p>
يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopStart source.loopStart] على *value*.
</p>
<h3>[method:this setLoopEnd]( [param:Float value] )</h3>
<p>
يضبط [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioBufferSourceNode/loopEnd source.loopEnd] على *value*.
</p>
<h3>[method:this setMediaElementSource]( mediaElement )</h3>
<p>
يطبق الكائن المحدد من النوع [link:https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement HTMLMediaElement] كمصدر لهذا الصوت.<br />
يحدد أيضًا [page:Audio.hasPlaybackControl hasPlaybackControl] إلى false.
</p>
<h3>[method:this setMediaStreamSource]( mediaStream )</h3>
<p>
يطبق الكائن المحدد من النوع [link:https://developer.mozilla.org/en-US/docs/Web/API/MediaStream MediaStream] كمصدر لهذا الصوت.<br />
يحدد أيضًا [page:Audio.hasPlaybackControl hasPlaybackControl] إلى false.
</p>
<h3>[method:this setNodeSource]( audioNode )</h3>
<p>
يقوم بإعداد [page:Audio.source source] إلى audioBuffer ، ويقوم بتعيين [page:Audio.sourceType sourceType] على 'audioNode'.<br />
يضبط أيضًا [page:Audio.hasPlaybackControl hasPlaybackControl] إلى false.
</p>
<h3>[method:this setPlaybackRate]( [param:Float value] )</h3>
<p>
إذا تم تمكين [page:Audio.hasPlaybackControl hasPlaybackControl] ، فيتم ضبط [page:Audio.playbackRate playbackRate] على *value*.
</p>
<h3>[method:this setVolume]( [param:Float value] )</h3>
<p>
تضبط مستوى الصوت.
</p>
<h3>[method:this stop]()</h3>
<p>
إذا تم تمكين [page:Audio.hasPlaybackControl hasPlaybackControl] ، فسيتوقف عن التشغيل.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
يقوم بإنشاء كائن AudioAnalyser ، والذي يستخدم [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode] لتحليل البيانات الصوتية.<br /><br />
هذا يستخدم [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
</p>
<h2>مثال التعليمة البرمجية</h2>
<code>
// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );
// create an Audio source
const sound = new THREE.Audio( listener );
// load a sound and set it as the Audio object's buffer
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
sound.setBuffer( buffer );
sound.setLoop(true);
sound.setVolume(0.5);
sound.play();
});
// create an AudioAnalyser, passing in the sound and desired fftSize
const analyser = new THREE.AudioAnalyser( sound, 32 );
// get the average frequency of the sound
const data = analyser.getAverageFrequency();
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webaudio_sandbox webaudio / sandbox ]<br />
[example:webaudio_visualizer webaudio / visualizer ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( audio, [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize fftSize] )</h3>
<p>
يقوم بإنشاء [page:AudioAnalyser AudioAnalyser] جديد.
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:AnalyserNode analyser]</h3>
<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode AnalyserNode] يستخدم لتحليل الصوت.</p>
<h3>[property:Integer fftSize]</h3>
<p>
قدرة غير صفرية تصل إلى 2048 ، تمثل حجم FFT (Fast Fourier Transform) لاستخدامها لتحديد مجال التردد (frequency domain).
انظر [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/fftSize this page] للحصول على التفاصيل.
</p>
<h3>[property:Uint8Array data]</h3>
<p>
*Uint8Array* بالحجم المحدد بواسطة [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/frequencyBinCount analyser.frequencyBinCount] يستخدم للاحتفاظ ببيانات التحليل.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:Uint8Array getFrequencyData]()</h3>
<p>
يستخدم طريقة [link:https://developer.mozilla.org/en-US/docs/Web/API/AnalyserNode/getByteFrequencyData getByteFrequencyData] الخاصة بـ Web Audio. انظر تلك الصفحة.
</p>
<h3>[method:Number getAverageFrequency]()</h3>
<p>
تقوم بإرجاع متوسط ​​الترددات المعادة بطريقة [page:AudioAnalyser.getFrequencyData getFrequencyData].
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
هذا يحتوي على طرق لإعداد [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext].<br /><br />
تستخدم داخليا من قبل فئتي [page:AudioListener AudioListener] و [page:AudioLoader AudioLoader].<br /><br />
يستخدم هذا [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:AudioContext getContext]()</h3>
<p>
تقوم بإرجاع قيمة المتغير *context* في النطاق الخارجي ، إذا تم تحديده ، أو قم بتعيينه على [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] جديدًا.
</p>
<h3>[method:AudioContext setContext]( [param:AudioContext value] )</h3>
<p>
تضبط المتغير *context* في النطاق الخارجي على *value*.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr;
<h1>[name]</h1>
<p class="desc">
يمثل هذا المكون [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioListener listener] افتراضيًا من جميع المؤثرات الصوتية الموضعية وغير الموضعية في المشهد.<br />
عادةً ما يُنشئ تطبيق three.js مثيلاً واحدًا من هذا الكائن. إنها معلمة تفسير إلزامية لكيانات الصوت مثل [page:Audio Audio] و [page:PositionalAudio PositionalAudio].<br />
في معظم الحالات ، يكون الكائن المستمع هو كائن فرعي للكاميرا. لذا فإن التحول ثلاثي الأبعاد للكاميرا يمثل التحول ثلاثي الأبعاد للمستمع.
</p>
<h2>مثال التعليمة البرمجية</h2>
<code>
// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );
// create a global audio source
const sound = new THREE.Audio( listener );
// load a sound and set it as the Audio object's buffer
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/ambient.ogg', function( buffer ) {
sound.setBuffer( buffer );
sound.setLoop(true);
sound.setVolume(0.5);
sound.play();
});
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webaudio_sandbox webaudio / sandbox ]<br />
[example:webaudio_timing webaudio / timing ]<br />
[example:webaudio_visualizer webaudio / visualizer ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( )</h3>
<p>
يقوم بإنشاء AudioListener جديد.
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:AudioContext context]</h3>
<p>الـ[link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext AudioContext] الخاصة بـ[page:AudioListener listener] المعطاة في المنشئ.</p>
<h3>[property:GainNode gain]</h3>
<p>[link:https://developer.mozilla.org/en-US/docs/Web/API/GainNode GainNode] تم إنشاؤه باستخدام [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioContext/createGain AudioContext.createGain](). </p>
<h3>[property:AudioNode filter]</h3>
<p>الافتراضي هو *null*.</p>
<h3>[property:Number timeDelta]</h3>
<p>قيمة دلتا الخاصة بالوقت للكيانات الصوتية. استخدم في سياق [link:https://developer.mozilla.org/en-US/docs/Web/API/AudioParam/linearRampToValueAtTime AudioParam.linearRampToValueAtTimeDefault](). الافتراضي هو *0*.</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:GainNode getInput]()</h3>
<p>
ترجع قيمة [page:AudioListener.gain gainNode].
</p>
<h3>[method:AudioListener removeFilter]()</h3>
<p>
اضبط قيمة [page:AudioListener.filter filter] على *null*.
</p>
<h3>[method:AudioNode getFilter]()</h3>
<p>
ترجع قيمة الخاصة بـ[page:AudioListener.filter filter].
</p>
<h3>[method:this setFilter]( [param:AudioNode value] )</h3>
<p>
تقوم بتعيين خاصية [page:AudioListener.filter filter] إلى *value*.
</p>
<h3>[method:Float getMasterVolume]()</h3>
<p>
إعادة *volume*.
</p>
<h3>[method:this setMasterVolume]( [param:Number value] )</h3>
<p>
ضبط مستوى الصوت (volume).
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr; [page:Audio] &rarr;
<h1>[name]</h1>
<p class="desc">
تقوم بإنشاء كائن صوتي موضعي (positional).<br /><br />
يستخدم هذا [link:https://developer.mozilla.org/en-US/docs/Web/API/Web_Audio_API Web Audio API].
</p>
<h2>مثال التعليمة البرمجية</h2>
<code>
// create an AudioListener and add it to the camera
const listener = new THREE.AudioListener();
camera.add( listener );
// create the PositionalAudio object (passing in the listener)
const sound = new THREE.PositionalAudio( listener );
// load a sound and set it as the PositionalAudio object's buffer
const audioLoader = new THREE.AudioLoader();
audioLoader.load( 'sounds/song.ogg', function( buffer ) {
sound.setBuffer( buffer );
sound.setRefDistance( 20 );
sound.play();
});
// create an object for the sound to play from
const sphere = new THREE.SphereGeometry( 20, 32, 16 );
const material = new THREE.MeshPhongMaterial( { color: 0xff2200 } );
const mesh = new THREE.Mesh( sphere, material );
scene.add( mesh );
// finally add the sound to the mesh
mesh.add( sound );
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webaudio_orientation webaudio / orientation ]<br />
[example:webaudio_sandbox webaudio / sandbox ]<br />
[example:webaudio_timing webaudio / timing ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:AudioListener listener] )</h3>
<p>
listener — (ضرورية) كائن [page:AudioListener AudioListener] .
</p>
<h2>الخصائص (Properties)</h2>
<p>
تراجع فئة [page:Audio Audio] من أجل الخصائص الموروثة.
</p>
<h3>[property:PannerNode panner]</h3>
<p> خاصية [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode PannerNode] التابعة لـ*PositionalAudio*.</p>
<h2>الوظائف (Methods)</h2>
<p>
راجع فئة [page:Audio Audio] من أجل الوظائف الموروثة.
</p>
<h3>[method:PannerNode getOutput]()</h3>
<p>
ترجع الـ[page:PositionalAudio.panner panner].
</p>
<h3>[method:Float getRefDistance]()</h3>
<p>
تُرجع القيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
</p>
<h3>[method:this setRefDistance]( [param:Float value] )</h3>
<p>
يضبط قيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/refDistance panner.refDistance].
</p>
<h3>[method:Float getRolloffFactor]()</h3>
<p>
تُرجع القيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
</p>
<h3>[method:this setRolloffFactor]( [param:Float value] )</h3>
<p>
يضبط قيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/rolloffFactor panner.rolloffFactor].
</p>
<h3>[method:String getDistanceModel]()</h3>
<p>
تُرجع القيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
</p>
<h3>[method:this setDistanceModel]( [param:String value] )</h3>
<p>
يضبط قيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/distanceModel panner.distanceModel].
</p>
<h3>[method:Float getMaxDistance]()</h3>
<p>
تُرجع القيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
</p>
<h3>[method:this setMaxDistance]( [param:Float value] )</h3>
<p>
يضبط قيمة [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode/maxDistance panner.maxDistance].
</p>
<h3>[method:this setDirectionalCone]( [param:Float coneInnerAngle], [param:Float coneOuterAngle], [param:Float coneOuterGain] )</h3>
<p>
يمكن استخدام هذه الطريقة لتحويل الصوت متعدد الاتجاهات إلى [link:https://developer.mozilla.org/en-US/docs/Web/API/PannerNode directional sound].
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr; [page:Camera] &rarr; [page:PerspectiveCamera] &rarr;
<h1>[name]</h1>
<p class="desc">
يمكن استخدام [name] لتقديم مشهد بكفاءة مع مجموعة محددة مسبقًا من الكاميرات. يعد هذا جانبًا مهمًا من جوانب الأداء لعرض مشاهد الواقع الافتراضي.<br />
يحمل دائمًا نموذج لـ [name] مصفوفة من الكاميرات الفرعية. من الضروري تحديد خاصية *viewport* لكل كاميرا فرعية والتي تحدد جزء منفذ العرض الذي يتم تقديمه باستخدام هذه الكاميرا.
</p>
<h2>أمثلة (Examples)</h2>
<p>[example:webgl_camera_array camera / array ]</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Array array] )</h3>
<p>
مجموعة من الكاميرات.
</p>
<h2>الخصائص (Properties)</h2>
<p>راجع الفئة [page:PerspectiveCamera] الأساسية للممتلكات العامة.</p>
<h3>[property:Array cameras]</h3>
<p>
مجموعة من الكاميرات.
</p>
<h3>[property:Boolean isArrayCamera]</h3>
<p>
Read-only flag to check if a given object is of type [name].
</p>
<h2>الوظائف (Methods)</h2>
<p>راجع الفئة الأساسية [page:PerspectiveCamera] للتعرف على الطرق الشائعة.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr;
<h1>[name]</h1>
<p class="desc">
فئة أساسية مجردة للكاميرات. يجب أن يتم توريث هذه الفئة دائمًا عند إنشاء كاميرا جديدة.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]()</h3>
<p>
ينشئ كائن [name] جديد. لاحظ أن هذه الفئة لا يُقصد أن يتم استدعاؤها مباشرة ؛
ربما تريد [page:PerspectiveCamera] أو [page:OrthographicCamera] بدلاً من ذلك.
</p>
<h2>الخصائص (Properties)</h2>
<p>راجع الفئة [page:Object3D] الأساسية للممتلكات العامة.</p>
<h3>[property:Boolean isCamera]</h3>
<p>
Read-only flag to check if a given object is of type [name].
</p>
<h3>[property:Layers layers]</h3>
<p>
ال [page:Layers layers] التي تعد الكاميرا عضو فيها. هذه ملكية موروثة من [page:Object3D].<br /><br />
يجب أن تشترك الكائنات في طبقة واحدة على الأقل مع الكاميرا لتظهر عند عرض وجهة نظر الكاميرا.
</p>
<h3>[property:Matrix4 matrixWorldInverse]</h3>
<p>
هذه القيمة هي نتيجة عكس matrixWorld. يحتوي MatrixWorld على Matrix الذي يحتوي على عالم تحويل الكاميرا.
</p>
<h3>[property:Matrix4 projectionMatrix]</h3>
<p>هذه هي المصفوفة التي تحتوي على الإسقاط.</p>
<h3>[property:Matrix4 projectionMatrixInverse]</h3>
<p>معكوس مصفوفة الإسقاط *projectionMatrix*.</p>
<h2>الوظائف (Methods)</h2>
<p>راجع الفئة الأساسية [page:Object3D] للتعرف على الطرق الشائعة.</p>
<h3>[method:Camera clone]( )</h3>
<p>
ترجع كاميرا جديدة بنفس خصائص هذه الكاميرا.
</p>
<h3>[method:this copy]( [param:Camera source], [param:Boolean recursive] )</h3>
<p>
تنسخ الخصائص من الكاميرا المصدر إلى هذه الكاميرا.
</p>
<h3>[method:Vector3 getWorldDirection]( [param:Vector3 target] )</h3>
<p>
[page:Vector3 target] — سيتم نسخ النتيجة في الـ*Vector3* الحالي. <br /><br />
ترجع [page:Vector3] التي تمثل اتجاه الفضاء العالمي الذي تنظر فيه الكاميرا.
(ملاحظة: تنظر الكاميرا إلى محورها z المحلي والسالب).<br /><br />
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr;
<h1>[name]</h1>
<p class="desc">يقوم بإنشاء 6 كاميرات يتم تحويلها إلى [page:WebGLCubeRenderTarget].</p>
<h2>مثال التعليمة البرمجية</h2>
<code>
// Create cube render target
const cubeRenderTarget = new THREE.WebGLCubeRenderTarget( 128, { generateMipmaps: true, minFilter: THREE.LinearMipmapLinearFilter } );
// Create cube camera
const cubeCamera = new THREE.CubeCamera( 1, 100000, cubeRenderTarget );
scene.add( cubeCamera );
// Create car
const chromeMaterial = new THREE.MeshLambertMaterial( { color: 0xffffff, envMap: cubeRenderTarget.texture } );
const car = new THREE.Mesh( carGeometry, chromeMaterial );
scene.add( car );
// Update the render target cube
car.setVisible( false );
cubeCamera.position.copy( car.position );
cubeCamera.update( renderer, scene );
// Render the scene
car.setVisible( true );
renderer.render( scene, camera );
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Number near], [param:Number far], [param:WebGLCubeRenderTarget renderTarget] )</h3>
<p>
near -- مسافة الاقتطاع القريبة. <br />
far -- مسافة القطع البعيدة <br />
renderTarget -- هدف عرض مكعب الوجهة *cube render target*.
</p>
<p>
ينشئ CubeCamera الذي يحتوي على 6 [page:PerspectiveCamera PerspectiveCameras] ذلك
الذي سيتم عرضه من خلال [page:WebGLCubeRenderTarget].
</p>
<h2>الخصائص (Properties)</h2>
<p>راجع فئة [page:Object3D] الأساسية للخصائص العامة.</p>
<h3>[property:WebGLCubeRenderTarget renderTarget]</h3>
<p>
الهدف الخاص بـ*cube render target*.
</p>
<h2>الوظائف (Methods)</h2>
<p>راجع فئة [page:Object3D] الأساسية للخصائص العامة.</p>
<h3>[method:undefined update]( [param:WebGLRenderer renderer], [param:Scene scene] )</h3>
<p>
renderer -- عارض WebGL الحالي <br />
scene -- المشهد الحالي
</p>
<p>
استدعاء هذا لتحديث [page:CubeCamera.renderTarget renderTarget].
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr; [page:Camera] &rarr;
<h1>[name]</h1>
<p class="desc">
كاميرا تستخدم
[link:https://en.wikipedia.org/wiki/Orthographic_projection الإسقاط المجسمي].<br /><br />
في هذا النمط من الإسقاط، يبقى حجم الجسم
ثابتاً في الصورة المُرسَمَة بغض النظر عن مسافته من الكاميرا.<br /><br />
يمكن أن يكون هذا مفيداً لتصوير المشاهد ثنائية الأبعاد وعناصر واجهة المستخدم، وغيرها من
الأشياء.
</p>
<h2>مثال للكود</h2>
<code>
const camera = new THREE.OrthographicCamera( width / - 2, width / 2, height / 2, height / - 2, 1, 1000 );
scene.add( camera );
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl_camera camera ]<br />
[example:webgl_interactive_cubes_ortho interactive / cubes / ortho ]<br />
[example:webgl_materials_cubemap_dynamic materials / cubemap / dynamic]<br />
[example:webgl_postprocessing_advanced postprocessing / advanced ]<br />
[example:webgl_postprocessing_dof2 postprocessing / dof2 ]<br />
[example:webgl_postprocessing_godrays postprocessing / godrays ]<br />
[example:webgl_rtt rtt ]<br />
[example:webgl_shadowmap shadowmap ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Number left], [param:Number right], [param:Number top], [param:Number bottom], [param:Number near], [param:Number far] )</h3>
<p>
left — سطح الهرم الأيسر.<br />
right — سطح الهرم الأيمن.<br />
top — سطح الهرم العلوي.<br />
bottom — سطح الهرم السفلي.<br />
near — سطح الهرم الأمامي.<br />
far — سطح الهرم الخلفي.<br /><br />
معًا، تحدد هذه العناصر هرم العرض للكاميرا.
[link:https://en.wikipedia.org/wiki/Viewing_frustum هرم الرؤية].
</p>
<h2>الخصائص (Properties)</h2>
<p>
انظر إلى صفحة [page:Camera] الأساسية للحصول على الخصائص الشائعة.<br />
يرجى ملاحظة أنه بعد إجراء تغييرات على معظم هذه الخصائص، يجب عليك استدعاء
[page:OrthographicCamera.updateProjectionMatrix .updateProjectionMatrix]
لجعل التغييرات سارية المفعول.
</p>
<h3>[property:Float bottom]</h3>
<p>سطح الهرم السفلي للكاميرا.</p>
<h3>[property:Float far]</h3>
<p>
سطح الهرم الخلفي للكاميرا. العدد الافتراضي هو `2000`.<br /><br />
يجب أن يكون أكبر من القيمة الحالية لسطح الهرم الأمامي [page:.near near].
</p>
<h3>[property:Boolean isOrthographicCamera]</h3>
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى من النوع [name].</p>
<h3>[property:Float left]</h3>
<p>سطح الهرم الأيسر للكاميرا.</p>
<h3>[property:Float near]</h3>
<p>
سطح الهرم الأمامي للكاميرا. العدد الافتراضي هو `0.1`.<br /><br />
النطاق الصحيح هو بين `0` وقيمة الهرم الخلفي [page:.far far]. يرجى ملاحظة أنه، على عكس الـ [page:PerspectiveCamera]،
يمثل الصفر قيمة صالحة لسطح الهرم الأمامي في OrthographicCamera.
</p>
<h3>[property:Float right]</h3>
<p>سطح الهرم الأيمن للكاميرا.</p>
<h3>[property:Float top]</h3>
<p>سطح الهرم العلوي للكاميرا.</p>
<h3>[property:Object view]</h3>
<p>
`يتم تعيينها بواسطة [page:OrthographicCamera.setViewOffset setViewOffset]. العدد الافتراضي هو
`null`.
</p>
<h3>[property:number zoom]</h3>
<p>تُستخدم للحصول على قيمة عامل التكبير أو تعيينها للكاميرا. العدد الافتراضي هو `1`</p>
<h2>الوظائف (Methods)</h2>
<p>راجع صفحة [page:Camera] الأساسية للحصول على الأساليب الشائعة.</p>
<h3>[method:undefined setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
<p>
fullWidth — العرض الكامل لإعداد العرض المتعدد.<br />
fullHeight — الارتفاع الكامل لإعداد العرض المتعدد.<br />
x — الإزاحة الأفقية للكاميرا الفرعية.<br />
y — الإزاحة العمودية للكاميرا الفرعية.<br />
width — عرض الكاميرا الفرعية.<br />
height — ارتفاع الكاميرا الفرعية.<br /><br />
يُعيّن إزاحة في
[link:https://en.wikipedia.org/wiki/Viewing_frustum هرم الرؤية]
أكبر. هذا مفيد لإعدادات النوافذ المتعددة أو إعدادات الشاشات / الأجهزة المتعددة.
لمثال حول كيفية استخدامها، انظر [page:PerspectiveCamera.setViewOffset PerspectiveCamera].
</p>
<h3>[method:undefined clearViewOffset]()</h3>
<p>تزيل أي إزاحة تم تعيينها بواسطة طريقة .setViewOffset.</p>
<h3>[method:undefined updateProjectionMatrix]()</h3>
<p>
تحديث مصفوفة إسقاط الكاميرا. يجب استدعاؤها بعد أي تغيير في
المعلمات.
</p>
<h3>[method:Object toJSON]([param:Object meta])</h3>
<p>
meta -- كائن يحتوي على بيانات وصفية مثل الخامات أو الصور في الأجزاء
الفرعية للكائنات.<br />
تحويل الكاميرا إلى تنسيق three.js
[link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene]
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Object3D] &rarr; [page:Camera] &rarr;
<h1>[name]</h1>
<p class="desc">
كاميرا تستخدم تصوير منظوري
[link:https://en.wikipedia.org/wiki/Perspective_(graphical) Perspective Projection].
تم تصميم هذا الوضع لمحاكاة الطريقة التي يرى بها العين البشرية.
وهو أكثر أنماط التصوير استخدامًا لإظهار مشهد ثلاثي الأبعاد.
</p>
<h2>مثال للكود</h2>
<code>
const camera = new THREE.PerspectiveCamera( 45, width / height, 1, 1000 );
scene.add( camera );
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl_animation_skinning_blending animation / skinning / blending]<br />
[example:webgl_animation_skinning_morph animation / skinning / morph ]<br />
[example:webgl_effects_stereo effects / stereo ]<br />
[example:webgl_interactive_cubes interactive / cubes ]<br />
[example:webgl_loader_collada_skinning loader / collada / skinning ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Number fov], [param:Number aspect], [param:Number near], [param:Number far] )</h3>
<p>
fov — زاوية مجال الرؤية الرأسية للكاميرا.<br />
aspect — نسبة العرض إلى الارتفاع للكاميرا.<br />
near — سطح الهرم الأمامي للكاميرا.<br />
far — سطح الهرم الخلفي للكاميرا.<br /><br />
معًا، يحدد هذه العناصر هرم الرؤية للكاميرا.
[link:https://en.wikipedia.org/wiki/Viewing_frustum هرم الرؤية]
</p>
<h2>الخصائص (Properties)</h2>
<p>
يرجى الرجوع إلى صفحة [page:Camera] الأساسية للحصول على الخصائص الشائعة.<br />
يرجى ملاحظة أنه بعد إجراء تغييرات على معظم هذه الخصائص، ستحتاج
إلى استدعاء [page:PerspectiveCamera.updateProjectionMatrix .updateProjectionMatrix] لجعل التغييرات سارية المفعول.
</p>
<h3>[property:Float aspect]</h3>
<p>
نسبة العرض إلى الارتفاع لسطح الهرم الرؤية (frustum) للكاميرا، وعادةً ما يكون العرض الخاص باللوحة السينمائية / الشاشة مقسومًا على ارتفاعها.
العدد الافتراضي هو `1` (لوحة سينمائية مربعة).
</p>
<h3>[property:Float far]</h3>
<p>
سطح الهرم الخلفي لسطح الرؤية (frustum) للكاميرا. العدد الافتراضي هو `2000`.<br /><br />
يجب أن يكون أكبر من القيمة الحالية لسطح الهرم الأمامي [page:.near near].
</p>
<h3>[property:Float filmGauge]</h3>
<p>
حجم الفيلم المستخدم للمحور الأكبر. العدد الافتراضي هو 35 (ملم).
لا يؤثر هذا المعلم على مصفوفة الإسقاط إلا إذا تم تعيين
.filmOffset إلى قيمة غير صفر.
</p>
<h3>[property:Float filmOffset]</h3>
<p>
الإزاحة الأفقية غير المركزة في نفس وحدة `.filmGauge`. العدد الافتراضي هو
`0`.
</p>
<h3>[property:Float focus]</h3>
<p>
مسافة الكائن المستخدمة لتحقيق تأثيرات الإسقاط المتزامن والعمق الحقيقي.
هذا المعلم لا يؤثر على مصفوفة الإسقاط إلا إذا تم استخدام [page:StereoCamera].
العدد الافتراضي هو `10`.
</p>
<h3>[property:Float fov]</h3>
<p>
زاوية مجال الرؤية الرأسية لسطح الهرم الرؤية (frustum) للكاميرا، من أسفل الرؤية إلى أعلى الرؤية، بالدرجات.
العدد الافتراضي هو `50`.
</p>
<h3>[property:Boolean isPerspectiveCamera]</h3>
<p>علامة تحقق للتحقق مما إذا كان الكائن المعطى من نوع [name]. هذه العلامة لا يمكن تعديلها.</p>
<h3>[property:Float near]</h3>
<p>
سطح الهرم الأمامي لسطح الرؤية (frustum) للكاميرا.
العدد الافتراضي هو `0.1`.<br /><br />
النطاق الصحيح هو أكبر من `0` وأقل من القيمة الحالية لسطح الهرم الخلفي [page:.far far].
يرجى ملاحظة أنه، على عكس الكاميرا المسطحة
[page:OrthographicCamera]، القيمة `0` ليست قيمة صالحة لسطح الهرم الأمامي لكاميرا من نوع PerspectiveCamera.
</p>
<h3>[property:Object view]</h3>
<p>
مواصفات نافذة هرم الرؤية (frustum) أو `null`.
يتم تعيين هذا باستخدام طريقة [page:PerspectiveCamera.setViewOffset .setViewOffset]
ويتم مسحها باستخدام [page:PerspectiveCamera.clearViewOffset .clearViewOffset].
</p>
<h3>[property:number zoom]</h3>
<p>يتم الحصول على قيمة عامل التكبير أو تعيينها للكاميرا. العدد الافتراضي هو `1`.</p>
<h2>الوظائف (Methods)</h2>
<p>يرجى الرجوع إلى صفحة [page:Camera] الأساسية للحصول على الأساليب الشائعة.</p>
<h3>[method:undefined clearViewOffset]()</h3>
<p>تزيل أي إزاحة تم تعيينها باستخدام طريقة [page:PerspectiveCamera.setViewOffset .setViewOffset].</p>
<h3>[method:Float getEffectiveFOV]()</h3>
<p>تُرجع زاوية مجال الرؤية الرأسية الحالية بالدرجات باعتبار .zoom.</p>
<h3>[method:Float getFilmHeight]()</h3>
<p>
تُرجع ارتفاع الصورة على الفيلم. إذا كان
.aspect أقل من الواحد (تنسيق صورة عمودي)، فإن النتيجة تساوي .filmGauge.
</p>
<h3>[method:Float getFilmWidth]()</h3>
<p>
تُرجع عرض الصورة على الفيلم. إذا كان
.aspect أكبر من أو يساوي الواحد (تنسيق صورة أفقي)، فإن النتيجة تساوي .filmGauge.
</p>
<h3>[method:Float getFocalLength]()</h3>
<p>
تُرجع البعد البؤري للـ .fov الحالي بالنسبة لـ .filmGauge.
</p>
<h3>[method:undefined setFocalLength]( [param:Float focalLength] )</h3>
<p>
يتم تعيين الـ FOV بواسطة البعد البؤري بالنسبة لـ
.filmGauge الحالي لـ[page:PerspectiveCamera].<br /><br />
بشكل افتراضي، يتم تحديد البعد البؤري للكاميرا بحجم 35 مم (إطار كامل).
</p>
<h3>[method:undefined setViewOffset]( [param:Float fullWidth], [param:Float fullHeight], [param:Float x], [param:Float y], [param:Float width], [param:Float height] )</h3>
<p>
fullWidth — العرض الكامل لإعداد العرض المتعدد<br />
fullHeight — الارتفاع الكامل لإعداد العرض المتعدد<br />
x — الإزاحة الأفقية للكاميرا الفرعية<br />
y — الإزاحة الرأسية للكاميرا الفرعية<br />
width — عرض الكاميرا الفرعية<br />
height — ارتفاع الكاميرا الفرعية
</p>
<p>
يضبط الإزاحة في هرم الرؤية الأكبر.
هذا مفيد لإعدادات النوافذ المتعددة أو إعدادات متعددة الشاشات/الأجهزة.
</p>
<p>
على سبيل المثال، إذا كان لديك 3x2 شاشة
وكانت كل شاشة 1920x1080 وكانت الشاشات في شبكة مثل هذه:<br />
</p>
<pre>
+---+---+---+
| A | B | C |
+---+---+---+
| D | E | F |
+---+---+---+
</pre>
فمن أجل كل شاشة، ستقوم بالاستدعاء بهذا الشكل:<br />
<code>const w = 1920;
const h = 1080;
const fullWidth = w * 3;
const fullHeight = h * 2;
// A
camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 0, w, h );
// B
camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 0, w, h );
// C
camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 0, w, h );
// D
camera.setViewOffset( fullWidth, fullHeight, w * 0, h * 1, w, h );
// E
camera.setViewOffset( fullWidth, fullHeight, w * 1, h * 1, w, h );
// F
camera.setViewOffset( fullWidth, fullHeight, w * 2, h * 1, w, h );
</code>
<p>يرجى ملاحظة أنه لا يوجد سبب لأن تكون الشاشات بحجم متساوٍ أو متوضعة على شكل شبكة. يمكن توزيعها بأي شكل يناسب الاحتياجات المحددة.</p>
<h3>[method:undefined updateProjectionMatrix]()</h3>
<p>
يقوم بتحديث مصفوفة الإسقاط الخاصة بالكاميرا، ويجب استدعاءها بعد أي تغيير في
المعاملات.
</p>
<h3>[method:Object toJSON]([param:Object meta])</h3>
<p>
meta -- كائن يحتوي على بيانات وصفية مثل القوام أو الصور في الكائنات
الفرعية.<br />
يمكن تحويل الكاميرا إلى تنسيق three.js
[link:https://github.com/mrdoob/three.js/wiki/JSON-Object-Scene-format-4 JSON Object/Scene format].
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
كاميرات بتأثير مزدوج [page:PerspectiveCamera] تستخدم لتحقيق تأثيرات مثل
[link:https://en.wikipedia.org/wiki/Anaglyph_3D 3D Anaglyph] أو
[link:https://en.wikipedia.org/wiki/parallax_barrier Parallax Barrier].
</p>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl_effects_anaglyph effects / anaglyph ]<br />
[example:webgl_effects_parallaxbarrier effects / parallaxbarrier ]<br />
[example:webgl_effects_stereo effects / stereo ]
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( )</h3>
<h2>الخصائص (Properties)</h2>
<h3>[property:Float aspect]</h3>
<p>العدد الافتراضي هو `1`.</p>
<h3>[property:Float eyeSep]</h3>
<p>العدد الافتراضي هو `0.064`.</p>
<h3>[property:PerspectiveCamera cameraL]</h3>
<p>
الكاميرا اليسرى. يتم إضافتها إلى [page:Layers layer 1] - يجب أن يتم إضافة الكائنات التي يتم عرضها
بالكاميرا اليسرى إلى هذه الطبقة أيضًا.
</p>
<h3>[property:PerspectiveCamera cameraR]</h3>
<p>
الكاميرا اليمنى. يتم إضافتها إلى [page:Layers layer 2] - يجب أن يتم إضافة الكائنات التي يتم عرضها
بالكاميرا اليمنى إلى هذه الطبقة أيضًا.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined update]( [param:PerspectiveCamera camera] )</h3>
<p>يقوم بتحديث الكاميرات الاستريو بناءً على الكاميرا الممررة كمعامل.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>Animation Constants</h1>
<h2>وضعيات التكرار (Loop Modes)</h2>
<code>
THREE.LoopOnce
THREE.LoopRepeat
THREE.LoopPingPong
</code>
<h2>وضعيات التداخل (Interpolation Modes)</h2>
<code>
THREE.InterpolateDiscrete
THREE.InterpolateLinear
THREE.InterpolateSmooth
</code>
<h2>وضعيات النهاية (Ending Modes)</h2>
<code>
THREE.ZeroCurvatureEnding
THREE.ZeroSlopeEnding
THREE.WrapAroundEnding
</code>
<h2>وضعيات الدمج للرسوم المتحركة (Animation Blend Modes)</h2>
<code>
THREE.NormalAnimationBlendMode
THREE.AdditiveAnimationBlendMode
</code>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>ثوابت استخدام بيانات الذاكرة المؤقتة (Buffer Attribute Usage Constants)</h1>
<p>
يمكن استخدام الثوابت التي تحدد طريقة استخدام بيانات الذاكرة المؤقتة للهيكل الهندسي لتعطي تلميحاً لواجهة برمجة التطبيقات API بشأن كيفية استخدام بيانات الذاكرة المؤقتة لتحسين الأداء.
</p>
<h2>مثال للكود</h2>
<code>
const geometry = new THREE.BufferGeometry();
const positionAttribute = new THREE.BufferAttribute( array, 3 , false );
positionAttribute.setUsage( THREE.DynamicDrawUsage );
geometry.setAttribute( 'position', positionAttribute );
</code>
<h2>أمثلة (Examples)</h2>
<p>[example:webgl_buffergeometry_drawrange materials / buffergeometry / drawrange ]</p>
<h2>استخدام الهيكل الهندسي</h2>
<code>
THREE.StaticDrawUsage
THREE.DynamicDrawUsage
THREE.StreamDrawUsage
THREE.StaticReadUsage
THREE.DynamicReadUsage
THREE.StreamReadUsage
THREE.StaticCopyUsage
THREE.DynamicCopyUsage
THREE.StreamCopyUsage
</code>
للحصول على معلومات أكثر تفصيلاً حول كل هذه الثوابت، يرجى الرجوع إلى
[link:https://www.khronos.org/opengl/wiki/Buffer_Object#Buffer_Object_Usage هذا الدليل الخاص بـ OpenGL].
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>الثوابت الأساسية (Core Constants)</h1>
<h2>رقم النسخة (Revision Number)</h2>
<code>
THREE.REVISION
</code>
<div id="rev">
رقم النسخة الحالي لـ three.js هو [link:https://github.com/mrdoob/three.js/releases رقم الإصدار].
</div>
<h2>مساحات الألوان (Color Spaces)</h2>
<code>
THREE.NoColorSpace = ""
THREE.SRGBColorSpace = "srgb"
THREE.LinearSRGBColorSpace = "srgb-linear"
</code>
<p>
[page:NoColorSpace]ﻻ يحدد مساحة الألوان بشكل عام. ويستخدم عادة للقواميس الخاصة بالألوان المتوسطة، مثل الخرائط العادية، وخرائط التصلب، وخرائط اللمعان، وخرائط الظل، والبيانات غير اللونية الأخرى.
</p>
<p>
[page:SRGBColorSpace] ("srgb") يشير إلى مساحة الألوان التي تم تعريفها بواسطة المعايير الرئيسية Rec. 709، ونقطة الأبيض D65، والوظائف اللاخطية لنقل sRGB. وهو المساحة الافتراضية للألوان في CSS، ويتم العثور عليها في العديد من الباليتات اللونية وأدوات اختيار الألوان. وعادةً ما تكون الألوان المعبر عنها بالتعبير الست عشري أو CSS في مساحة الألوان sRGB.
</p>
<p>
[page:LinearSRGBColorSpace] ("srgb-linear") يشير إلى مساحة الألوان sRGB (أعلاه) مع وظائف نقل النقل الخطي. وهي المساحة الافتراضية للألوان في three.js، وتستخدم طوال معظم عملية العرض. وتكون مكونات RGB التي توجد في مواد three.js والشواهد (shaders) في مساحة الألوان Linear-sRGB.
<p>للمزيد من المعلومات حول الخلفية والاستخدام، يرجى الرجوع إلى "إدارة الألوان".</p>
<h2>أزرار الماوس (Mouse Buttons)</h2>
<code>
THREE.MOUSE.LEFT
THREE.MOUSE.MIDDLE
THREE.MOUSE.RIGHT
THREE.MOUSE.ROTATE
THREE.MOUSE.DOLLY
THREE.MOUSE.PAN
</code>
<p>
تحمل الثوابت LEFT و ROTATE نفس القيمة الأساسية. كذلك الثوابت MIDDLE و DOLLY تحملان نفس القيمة الأساسية. وتحمل الثوابت RIGHT و PAN نفس القيمة الأساسية.
</p>
<h2>إجراءات اللمس (Touch Actions)</h2>
<code>
THREE.TOUCH.ROTATE THREE.TOUCH.PAN THREE.TOUCH.DOLLY_PAN
THREE.TOUCH.DOLLY_ROTATE
</code>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>ثوابت معادلات الدمج المخصصة (Custom Blending Equation Constants)</h1>
<p>
تعمل هذه الثوابت مع جميع أنواع المواد. يتم تعيين وضع الدمج للمادة أولاً إلى THREE.CustomBlending، ثم تعيين معادلة الدمج المطلوبة وعامل المصدر وعامل الوجهة.
</p>
<h2>مثال للكود</h2>
<code>
const material = new THREE.MeshBasicMaterial( {color: 0x00ff00} );
material.blending = THREE.CustomBlending;
material.blendEquation = THREE.AddEquation; //default
material.blendSrc = THREE.SrcAlphaFactor; //default
material.blendDst = THREE.OneMinusSrcAlphaFactor; //default
</code>
<h2>أمثلة (Examples)</h2>
<p>
[example:webgl_materials_blending_custom materials / blending / custom ]
</p>
<h2>معادلات الدمج (Blending Equations)</h2>
<code>
THREE.AddEquation
THREE.SubtractEquation
THREE.ReverseSubtractEquation
THREE.MinEquation
THREE.MaxEquation
</code>
<h2>عوامل المصدر (Source Factors)</h2>
<code>
THREE.ZeroFactor
THREE.OneFactor
THREE.SrcColorFactor
THREE.OneMinusSrcColorFactor
THREE.SrcAlphaFactor
THREE.OneMinusSrcAlphaFactor
THREE.DstAlphaFactor
THREE.OneMinusDstAlphaFactor
THREE.DstColorFactor
THREE.OneMinusDstColorFactor
THREE.SrcAlphaSaturateFactor
</code>
<h2>عوامل الوجهة (Destination Factors)</h2>
<p>
جميع عوامل المصدر صالحة كعوامل وجهة، باستثناء
<code>THREE.SrcAlphaSaturateFactor</code>
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>ثوابت المواد الخام (Material Constants)</h1>
<p class="desc">
تحدد هذه الثوابت الخصائص المشتركة بين جميع أنواع المواد الخام، باستثناء عمليات تجميع القوام الخاصة التي تنطبق فقط على
[page:MeshBasicMaterial.combine MeshBasicMaterial]،
[page:MeshLambertMaterial.combine MeshLambertMaterial] و
[page:MeshPhongMaterial.combine MeshPhongMaterial].<br />
</p>
<h2>الجانب (Side)</h2>
<code>
THREE.FrontSide
THREE.BackSide
THREE.DoubleSide
</code>
<p>
تحدد الجانب الذي سيتم عرضه للوجوه، سواءً الوجه الأمامي، الوجه الخلفي، أو كلاهما. الإعداد الافتراضي هو الوجه الأمامي.
</p>
<h2>وضعية الدمج (Blending Mode)</h2>
<code>
THREE.NoBlending
THREE.NormalBlending
THREE.AdditiveBlending
THREE.SubtractiveBlending
THREE.MultiplyBlending
THREE.CustomBlending
</code>
<p>
تحكم هذه الثوابت في معادلات الدمج بين المصدر والوجهة للألوان والألفا التي يتم إرسالها من المواد إلى WebGLRenderer للاستخدام بواسطة WebGL.
[page:Constant NormalBlending] هي الإعداد الافتراضي. ويجب تعيين [page:Constant CustomBlending] لاستخدام [page:CustomBlendingEquation Custom Blending Equations].
راجع مثال [example:webgl_materials_blending materials / blending].
</p>
<h2>وضعية العمق (Depth Mode)</h2>
<code>
THREE.NeverDepth
THREE.AlwaysDepth
THREE.EqualDepth
THREE.LessDepth
THREE.LessEqualDepth
THREE.GreaterEqualDepth
THREE.GreaterDepth
THREE.NotEqualDepth
</code>
<p>
تحدد وظيفة العمق التي تستخدمها المواد لمقارنة عمق بيكسلات الإدخال مع قيمة العمق الحالية في الذاكرة المؤقتة للعمق. إذا كانت نتيجة المقارنة صحيحة، فسيتم رسم البكسل.<br />
[page:Materials NeverDepth] لن يتم رسم أي بكسل.<br />
[page:Materials AlwaysDepth] سيتم رسم كل البكسلات.<br />
[page:Materials EqualDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل مساوٍ لعمق الذاكرة المؤقتة الحالي.<br />
[page:Materials LessDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل أقل من عمق الذاكرة المؤقتة الحالي.<br />
[page:Materials LessEqualDepth] هي الإعداد الافتراضي وسيتم رسم البكسل إذا كان عمق البكسل المدخل أقل من أو يساوي عمق الذاكرة المؤقتة الحالي.<br />
[page:Materials GreaterEqualDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل أكبر من أو يساوي عمق الذاكرة المؤقتة الحالي.<br />
[page:Materials GreaterDepth] سيتم رسم البكسل إذا كان عمق البكسل المدخل أكبر من عمق الذاكرة المؤقتة الحالي.<br />
[page:Materials NotEqualDepth] سيتم رسم البكسل إذا كان عمقالبكسل المدخل لا يساوي عمق الذاكرة المؤقتة الحالي.<br />
</p>
<h2>عمليات تجميع القوام الخاصة بالقوام (Texture Combine Operations)</h2>
<code>
THREE.MultiplyOperation
THREE.MixOperation
THREE.AddOperation
</code>
<p>
تحدد هذه الثوابت كيفية دمج لون سطح الكائن مع خريطة البيئة (إذا كانت متاحة) في [page:MeshBasicMaterial.combine MeshBasicMaterial]،
[page:MeshLambertMaterial.combine MeshLambertMaterial]
و [page:MeshPhongMaterial.combine MeshPhongMaterial]. <br />
[page:Constant MultiplyOperation] هي الإعداد الافتراضي وتقوم بضرب لون خريطة البيئة بلون سطح الكائن.<br />
[page:Constant MixOperation] تستخدم معامل الانعكاسية لدمج اللونين.<br />
[page:Constant AddOperation] تقوم بجمع اللونين.
</p>
<h2>دوال القالب (Stencil Functions)</h2>
<code>
THREE.NeverStencilFunc
THREE.LessStencilFunc
THREE.EqualStencilFunc
THREE.LessEqualStencilFunc
THREE.GreaterStencilFunc
THREE.NotEqualStencilFunc
THREE.GreaterEqualStencilFunc
THREE.AlwaysStencilFunc
</code>
<p>
تحدد الدالة التي يستخدمها المادة لتحديد ما إذا كان يجب أن تنفذ عملية القالب أم لا.<br />
[page:Materials NeverStencilFunc] لن يعود بقيمة صحيحة أبدًا.<br />
[page:Materials LessStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أقل من القيمة الحالية للختم.<br />
[page:Materials EqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية تساوي القيمة الحالية للختم.<br />
[page:Materials LessEqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أقل من أو تساوي القيمة الحالية للختم.<br />
[page:Materials GreaterStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أكبر من القيمة الحالية للختم.<br />
[page:Materials NotEqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية لا تساوي القيمة الحالية للختم.<br />
[page:Materials GreaterEqualStencilFunc] سيعود بقيمة صحيحة إذا كانت قيمة المرجع الختمية أكبر من أو تساوي القيمة الحالية للختم.<br />
[page:Materials AlwaysStencilFunc] سيعود بقيمة صحيحة دائمًا.<br />
</p>
<h2>عمليات القالب (Stencil Operations)</h2>
<code>
THREE.ZeroStencilOp
THREE.KeepStencilOp
THREE.ReplaceStencilOp
THREE.IncrementStencilOp
THREE.DecrementStencilOp
THREE.IncrementWrapStencilOp
THREE.DecrementWrapStencilOp
THREE.InvertStencilOp
</code>
<p>
تحدد العملية التي ستقوم بها المادة على ختم البيكسل في الختم إذا مرت الدالة الختمية المقدمة.<br />
[page:Materials ZeroStencilOp] سيضبط قيمة الختم على الصفر.<br />
[page:Materials KeepStencilOp] لن يقوم بتغيير قيمة الختم الحالية.<br />
[page:Materials ReplaceStencilOp] سيقوم بتبديل قيمة الختم بقيمة المرجع الختمية المحددة.<br />
[page:Materials IncrementStencilOp] سيزيد قيمة الختم الحالية بمقدار `1`.<br />
[page:Materials DecrementStencilOp] سينقص قيمة الختم الحالية بمقدار `1`.<br />
[page:Materials IncrementWrapStencilOp] سيزيد قيمة الختم الحالية بمقدار `1`. إذا زادت القيمة بعد ذلك عن `255`، فستضبط على `0`.<br />
[page:Materials DecrementWrapStencilOp] سينقص قيمة الختم الحالية بمقدار `1`. إذا انخفضت القيمة بعد ذلك أقل من `0`، فستضبط على `255`.<br />
[page:Materials InvertStencilOp] سيقوم بتنفيذ عملية انعكاس بتشكيلة الختم الحالية.<br />
</p>
<h2>نوع خريطة العرض الطبيعي (Normal map type)</h2>
<code>
THREE.TangentSpaceNormalMap
THREE.ObjectSpaceNormalMap
</code>
<p>
تحدد نوع خريطة العرض الطبيعي. لـTangentSpaceNormalMap، المعلومات ذات الصلة بالسطح الأساسي. أما بالنسبة لـ ObjectSpaceNormalMap، المعلومات ذات الصلة باتجاه الكائن. الإعداد الافتراضي هو [page:Constant TangentSpaceNormalMap].
</p>
<h2>إصدار GLSL</h2>
<code>
THREE.GLSL1
THREE.GLSL3
</code>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>ثوابت WebGLRenderer</h1>
<h2>أنماط قطع الوجه (Cull Face Modes)</h2>
<code>
THREE.CullFaceNone
THREE.CullFaceBack
THREE.CullFaceFront
THREE.CullFaceFrontBack
</code>
<p>
[page:constant CullFaceNone] تعطيل قطع الوجه.<br />
[page:constant CullFaceBack] قطع الوجوه الخلفية (الافتراضي).<br />
[page:constant CullFaceFront] قطع الوجوه الأمامية.<br />
[page:constant CullFaceFrontBack] قطع كلا الوجوه الأمامية والخلفية.
</p>
<h2>أنواع الظلال (Shadow Types)</h2>
<code>
THREE.BasicShadowMap
THREE.PCFShadowMap
THREE.PCFSoftShadowMap
THREE.VSMShadowMap
</code>
<p>
هذه الخيارات تحدد خاصية [page:WebGLRenderer.shadowMap.type shadowMap.type] في WebGLRenderer.<br /><br />
[page:constant BasicShadowMap] يعطي خرائط ظل غير مصفاة - الأسرع ، ولكن الأقل جودة.<br />
[page:constant PCFShadowMap] يصفي خرائط الظل باستخدام خوارزمية
Percentage-Closer Filtering (PCF) (افتراضي).<br />
[page:constant PCFSoftShadowMap] يصفي خرائط الظل باستخدام خوارزمية
Percentage-Closer Filtering (PCF) مع أفضل الظلال الناعمة
خاصةً عند استخدام خرائط ظل بدقة منخفضة.<br />
[page:constant VSMShadowMap] يصفي خرائط الظل باستخدام خوارزمية Variance Shadow
Map (VSM). عند استخدام VSMShadowMap ، سيقوم جميع مستقبلات الظل بإلقاء الظلال أيضًا.
</p>
<h2>Tone Mapping</h2>
<code>
THREE.NoToneMapping
THREE.LinearToneMapping
THREE.ReinhardToneMapping
THREE.CineonToneMapping
THREE.ACESFilmicToneMapping
THREE.CustomToneMapping
</code>
<p>
هذه الخيارات تحدد خاصية [page:WebGLRenderer.toneMapping toneMapping] في WebGLRenderer. يتم استخدام هذا لتقريب مظهر نطاق الإضاءة العالي (HDR) على الوسط الذي يحتوي على نطاق إضاءة منخفض على شاشة الكمبيوتر القياسية أو شاشة الجوال.
</p>
<p>
THREE.LinearToneMapping، THREE.ReinhardToneMapping، THREE.CineonToneMapping و THREE.ACESFilmicToneMapping هي تنفيذات مدمجة لتقريب مظهر نطاق الإضاءة العالي (HDR). يتوقع THREE.CustomToneMapping تنفيذًا مخصصًا عن طريق تعديل شفرة GLSL لبرنامج تظليل مقطع المواد. راجع [example:webgl_tonemapping WebGL / tonemapping] مثالًا.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/constants.js src/constants.js]
</p>
</body>
</html>
此差异已折叠。
此差异已折叠。
此差异已折叠。
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
كائن لتتبع الوقت. يستخدم هذا
[link:https://developer.mozilla.org/en-US/docs/Web/API/Performance/now performance.now] إذا كان متاحًا، وإلا فإنه يعود إلى
دقة أقل
[link:https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date/now Date.now].
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:Boolean autoStart] )</h3>
<p>
autoStart — (اختياري) ما إذا كان يجب تشغيل الساعة تلقائيًا عندما
[page:.getDelta]() يتم استدعاؤه لأول مرة. الافتراضي هو `true`.
</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:Boolean autoStart]</h3>
<p>
إذا تم تعيينه، يبدأ الساعة تلقائيًا عندما يتم استدعاء [page:.getDelta]()
لأول مرة. الافتراضي هو `true`.
</p>
<h3>[property:Float startTime]</h3>
<p>
يحمل الوقت الذي تم فيه استدعاء طريقة [page:Clock.start start] للساعة
آخر مرة. الافتراضي هو `0`.
</p>
<h3>[property:Float oldTime]</h3>
<p>
يحمل الوقت الذي تم فيه استدعاء طرق [page:Clock.start start],
[page:.getElapsedTime]() أو [page:.getDelta]() للساعة آخر مرة.
الافتراضي هو `0`.
</p>
<h3>[property:Float elapsedTime]</h3>
<p>
يتبع المجموع الكلي للوقت الذي كانت تعمل فيه الساعة. الافتراضي هو
`0`.
</p>
<h3>[property:Boolean running]</h3>
<p>ما إذا كانت الساعة تعمل أم لا. الافتراضي هو `false`.</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined start]()</h3>
<p>
يبدأ الساعة. كما يضبط [page:.startTime] و [page:.oldTime] على
الوقت الحالي، ويضبط [page:.elapsedTime] على `0` و [page:.running] على
`true`.
</p>
<h3>[method:undefined stop]()</h3>
<p>
يوقف الساعة ويضبط [page:Clock.oldTime oldTime] على الوقت الحالي.
</p>
<h3>[method:Float getElapsedTime]()</h3>
<p>
احصل على المجموع الكلي للثواني التي مرت منذ بدء تشغيل الساعة وضبط [page:.oldTime] على
الوقت الحالي.<br />
إذا كان [page:.autoStart] هو `true` والساعة لا تعمل، فإنه يبدأ أيضًا
ساعة.
</p>
<h3>[method:Float getDelta]()</h3>
<p>
احصل على المجموع الكلي للثواني التي مرت منذ ضبط [page:.oldTime] وضبط
[page:.oldTime] على الوقت الحالي.<br />
إذا كان [page:.autoStart] هو `true` والساعة لا تعمل، فإنه يبدأ أيضًа
ساعة.
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
أحداث JavaScript للكائنات المخصصة.<br />
[link:https://github.com/mrdoob/eventdispatcher.js EventDispatcher على GitHub]
</p>
<h2>مثال الكود</h2>
<code>
// إضافة الأحداث إلى كائن مخصص
class Car extends EventDispatcher {
start() {
this.dispatchEvent( { type: 'start', message: 'vroom vroom!' } );
}
};
// استخدام الأحداث مع الكائن المخصص
const car = new Car();
car.addEventListener( 'start', function ( event ) {
alert( event.message );
} );
car.start();
</code>
<h2>المنشئ (Constructor)</h2>
<h3>[name]()</h3>
<p>ينشئ كائن EventDispatcher.</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:undefined addEventListener]( [param:String type], [param:Function listener] )</h3>
<p>
type - نوع الحدث الذي يتم الاستماع إليه.<br />
listener - الدالة التي يتم استدعاؤها عند إطلاق الحدث.
</p>
<p>يضيف مستمعًا إلى نوع حدث.</p>
<h3>[method:Boolean hasEventListener]( [param:String type], [param:Function listener] )</h3>
<p>
type - نوع الحدث الذي يتم الاستماع إليه.<br />
listener - الدالة التي يتم استدعاؤها عند إطلاق الحدث.
</p>
<p>يتحقق مما إذا كان المستمع قد تمت إضافته إلى نوع حدث.</p>
<h3>[method:undefined removeEventListener]( [param:String type], [param:Function listener] )</h3>
<p>
type - نوع المستمع الذي يتم إزالته.<br />
listener - دالة المستمع التي يتم إزالتها.
</p>
<p>يزيل مستمعًا من نوع حدث.</p>
<h3>[method:undefined dispatchEvent]( [param:Object event] )</h3>
<p>event - الحدث الذي يتم إطلاقه.</p>
<p>إطلاق نوع حدث.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
<h1>[name]</h1>
<p class="desc">
لا يقوم هذا الفئة السمة المخزنة بإنشاء VBO. بدلاً من ذلك، يستخدم
أي VBO يتم تمريره في المُنشئ ويمكن تغييره لاحقًا عبر خاصية
`buffer`.<br /><br />
من الضروري تمرير معلمات إضافية جنبًا إلى جنب مع VBO. هذه هي: GL
context، نوع البيانات GL، عدد المكونات لكل رأس، عدد البايتات لكل
مكون، وعدد الرؤوس.<br /><br />
أكثر حالات الاستخدام شيوعًا لهذه الفئة هي عندما يتداخل نوع من
حسابات GPGPU أو حتى ينتج VBOs المعنية.
</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:WebGLBuffer buffer], [param:GLenum type], [param:Integer itemSize], [param:Integer elementSize], [param:Integer count] )</h3>
<p>
`buffer` — يجب أن يكون
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer WebGLBuffer].
<br />
`type` — واحد من
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants#Data_types أنواع بيانات WebGL].
<br />
`itemSize` — عدد قيم المصفوفة التي يجب ربطها برأس معين. على سبيل
المثال، إذا كانت هذه السمة تخزن متجهًا ثلاثي الأبعاد (مثل الموضع،
الطبيعي، أو اللون)، فيجب أن يكون itemSize هو 3.
<br />
`elementSize` — 1، 2 أو 4. الحجم المقابل (بالبايت) للمعلمة "type"
المعطاة.
</p>
<ul>
<li>gl.FLOAT: 4</li>
<li>gl.UNSIGNED_SHORT: 2</li>
<li>gl.SHORT: 2</li>
<li>gl.UNSIGNED_INT: 4</li>
<li>gl.INT: 4</li>
<li>gl.BYTE: 1</li>
<li>gl.UNSIGNED_BYTE: 1</li>
</ul>
<p>`count` — عدد الرؤوس المتوقع في VBO.</p>
<h2>الخصائص (Properties)</h2>
<h3>[property:WebGLBuffer buffer]</h3>
<p>
نسخة
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGLBuffer WebGLBuffer] الحالية.
</p>
<h3>[property:Integer count]</h3>
<p>عدد الرؤوس المتوقع في VBO.</p>
<h3>[property:Boolean isGLBufferAttribute]</h3>
<p>للقراءة فقط. دائمًا `true`.</p>
<h3>[property:Integer itemSize]</h3>
<p>كم عدد القيم التي تشكل كل عنصر (رأس).</p>
<h3>[property:Integer elementSize]</h3>
<p>
يخزن الحجم المقابل بالبايت لقيمة خاصية `type` الحالية.
</p>
<p>انظر أعلاه (المُنشئ) لقائمة بأحجام الأنواع المعروفة.</p>
<h3>[property:String name]</h3>
<p>
اسم اختياري لهذه الحالة من السمة. الافتراضي هو سلسلة فارغة.
</p>
<h3>[property:GLenum type]</h3>
<p>
[link:https://developer.mozilla.org/en-US/docs/Web/API/WebGL_API/Constants#Data_types نوع بيانات WebGL] يصف محتوى VBO الأساسي.
</p>
<p>
قم بتعيين هذه الخاصية معًا مع `elementSize`. الطريقة المستحسنة هي
باستخدام طريقة `setType`.
</p>
<h2>الوظائف (Methods)</h2>
<h3>[method:this setBuffer]( buffer )</h3>
<p>تضبط خاصية `buffer`.</p>
<h3>[method:this setType]( type, elementSize )</h3>
<p>تضبط كلاً من خصائص `type` و `elementSize`.</p>
<h3>[method:this setItemSize]( itemSize )</h3>
<p>تضبط خاصية `itemSize`.</p>
<h3>[method:this setCount]( count )</h3>
<p>تضبط خاصية `count`.</p>
<h3>[property:Integer version]</h3>
<p>
رقم إصدار، يزاد كل مرة يتم فيها تعيين خاصية needsUpdate على true.
</p>
<h3>[property:Boolean needsUpdate]</h3>
<p>
الافتراضي هو `false`. تعيين هذا إلى true يزاد
[page:GLBufferAttribute.version version].
</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:BufferAttribute] →
<h1>[name]</h1>
<p class="desc">نسخة مثيلة من [page:BufferAttribute].</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:TypedArray array], [param:Integer itemSize], [param:Boolean normalized], [param:Number meshPerAttribute] )</h3>
<h2>الخصائص (Properties)</h2>
<p>انظر [page:BufferAttribute] للخصائص الموروثة.</p>
<h3>[property:Number meshPerAttribute]</h3>
<p>
يحدد مدى تكرار قيمة هذه السمة المخزنة. قيمة واحدة تعني أن كل قيمة من
السمة المثيلة يتم استخدامها لمثيل واحد. قيمتان تعني أن كل قيمة يتم
استخدامها لمثيلين متتاليين (وهكذا). الافتراضي هو `1`.
</p>
<h2>الوظائف (Methods)</h2>
<p>انظر [page:BufferAttribute] للطُرق الموروثة.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:BufferGeometry] →
<h1>[name]</h1>
<p class="desc">نسخة مثيلة من [page:BufferGeometry].</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( )</h3>
<h2>الخصائص (Properties)</h2>
<p>انظر [page:BufferGeometry] للخصائص الموروثة.</p>
<h3>[property:Number instanceCount]</h3>
<p>الافتراضي هو `Infinity`.</p>
<h3>[property:Boolean isInstancedBufferGeometry]</h3>
<p>علامة للقراءة فقط للتحقق مما إذا كان الكائن المعطى هو من نوع [name].</p>
<h2>الوظائف (Methods)</h2>
<p>انظر [page:BufferGeometry] للطُرق الموروثة.</p>
<h3>[method:this copy]( [param:InstancedBufferGeometry source] )</h3>
<p>ينسخ [name] المعطى إلى هذه الحالة.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:InterleavedBuffer] →
<h1>[name]</h1>
<p class="desc">نسخة مثيلة من [page:InterleavedBuffer].</p>
<h2>المنشئ (Constructor)</h2>
<h3>[name]( [param:TypedArray array], [param:Integer itemSize], [param:Number meshPerAttribute] )</h3>
<h2>الخصائص (Properties)</h2>
<p>انظر [page:InterleavedBuffer] للخصائص الموروثة.</p>
<h3>[property:Number meshPerAttribute]</h3>
<p>الافتراضي هو `1`.</p>
<h2>الوظائف (Methods)</h2>
<p>انظر [page:InterleavedBuffer] للطُرق الموروثة.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="utf-8" />
<base href="../../../../" />
<script src="page.js"></script>
<link type="text/css" rel="stylesheet" href="page.css" />
</head>
<body class="rtl">
[page:Curve] &rarr; [page:EllipseCurve] &rarr;
<h1>[name]</h1>
<p class="desc">اسم مستعار لـ [page:EllipseCurve].</p>
<h2>الخصائص (Properties)</h2>
<p>راجع فئة [page:EllipseCurve] للحصول على الخصائص المشتركة.</p>
<h2>المصدر (Source)</h2>
<p>
[link:https://github.com/mrdoob/three.js/blob/master/src/[path].js src/[path].js]
</p>
</body>
</html>
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
此差异已折叠。
Markdown 格式
0% or
您添加了 0 到此讨论。请谨慎行事。
先完成此消息的编辑!
想要评论请 注册