إنشاء النماذج

*This content is translated using AI (Beta) and may contain errors. To view this page in English, click here.

من خلال النصوص الإرشادية والأنماط المحددة، يمكنك (ويمكن للاعبين في اللعبة) إنشاء كلاً من الأصول ثلاثية الأبعاد الثابتة والنماذج الوظيفية بالكامل مثل المركبات التي تسير، والطائرات التي تطير، والأسلحة التي تطلق. هذا الدليل يوضح كيفية استخدام GenerateModelAsync() كجزء من تجربة إبداعية ديناميكية يقودها اللاعبون.

نظرة عامة

يمكن لـ GenerateModelAsync() توليد هندسات متعددة الشبكات مع المزايا التالية:

  • يقوم النمط المحدد بتعريف كيفية تقسيم الهندسة الناتجة إلى أجزاء.
  • أي كائن يتم إنشاؤه في اللعبة سيتم نسخه ورؤيته من قبل جميع اللاعبين، مما يسمح لهم بالبناء معًا في الوقت الحقيقي.
  • الشبكات الناتجة تتمتع بجودة أعلى مع أشكال عامة أفضل، وأشكال ظلية، وتفاصيل أكثر، وأقل عيوب. المواد الناتجة أكثر توافقًا وتفصيلًا، مع قلة الحبوب وأقل إضاءة مخبوزة واضحة.
  • أوقات التوليد أقل زمن انتظار، مما يمكّن من إنشاء أسرع وأكثر استجابة في الألعاب.
  • يمكنك وحتى اللاعبين أثناء وقت اللعبة تحديد صناديق محيطية للمساعدة في اقتراح الحجم والنسب للنموذج الناتج.
  • عدد المثلثات الأقصى الاختياري يحافظ على أداء الكائنات الناتجة في لعبتك.

التوليد المستند إلى الأنماط

لإنشاء كائنات وظيفية، يجب فصل الهندسة الناتجة إلى عدة MeshParts. على سبيل المثال، لإنشاء سيارة قابلة للقيادة مع عجلات تدور وتوجه، هناك حاجة لخمسة MeshParts على الأقل: واحدة لجسم السيارة وأربعة لكل من عجلات السيارة. يحقق GenerateModelAsync() ذلك من خلال نمط يحدد الأجزاء المراد توليدها، كما هو موضح في مقتطف الشيفرة التالي:

Script in ServerScriptService

local GenerationService = game:GetService("GenerationService")
local Workspace = game:GetService("Workspace")
-- إعداد المدخلات للهندسة الناتجة
local inputs = {
TextPrompt = "سيارة تنين خضراء بأربع عجلات"
}
-- تعيين النمط إلى هيكل السيارة المحدد مسبقًا
local schema = {
PredefinedSchema = "Car5"
}
-- إجراء المكالمة لتوليد النموذج
local success, result, metadata = pcall(function()
return GenerationService:GenerateModelAsync(inputs, schema)
end)
if success then
-- تغيير حجم النموذج إلى الحجم المستهدف ووضعه بالقرب من مركز العالم
local targetSize = 16
local modelSize = result:GetExtentsSize()
local scaleFactor = targetSize / math.max(modelSize.X, modelSize.Y, modelSize.Z)
result:ScaleTo(scaleFactor)
result:PivotTo(CFrame.new(0, result:GetExtentsSize().Y / 2, -40))
-- تثبيت جميع الأجزاء حتى لا تنهار الشبكات
for _, descendant in result:GetDescendants() do
if descendant:IsA("BasePart") then
descendant.Anchored = true
end
end
-- تسمية النموذج وإضافته إلى مساحة العمل
result.Name = "BasicDragonCarGeneration"
result.Parent = Workspace
else
warn(result)
end

تظهر الصورة التالية الناتج المتوقع وبناؤه كما يظهر في تسلسل المستكشف:

النصوص القابلة لإعادة التوجيه

في Roblox، تشمل السلوكيات عادةً النصوص، والمرفقات، والقيود، وأنواع الكائنات الأخرى المرتبطة بالهندسات الساكنة المزخرفة لجعلها وظيفية. نظرًا لأن GenerateModelAsync() ينشئ مجموعة واسعة من الهندسات في الوقت الحقيقي، يجب إرفاق نصوص قابلة لإعادة التوجيه للتكيف تلقائيًا مع السلوكيات إلى الوظائف المتوقعة.

على سبيل المثال، اعتبر لعبة حيث يحصل اللاعبون على صنع سيارات قابلة للقيادة. يأخذ GenerateModelAsync() النص الإرشادي من اللاعب وينشئ خمسة شبكات مميزة (الجسم وأربع عجلات) عبر نمط Car5 schema. ثم، يتكيف نص إرشادي ذو نمط محدد مسبقًا مع سلوكه القيادي لتناسب حجم الشكل والتأكد من أن السيارة قابلة للقيادة وأن عجلاتها تدور بشكل واقعي.

لتجربة النصوص القابلة لإعادة التوجيه:

  1. قم بتنزيل ملف Behaviors.rbxm.

  2. في تسلسل المستكشف في الأستوديو، انقر بزر الماوس الأيمن على ReplicatedStorage، اختر إدراج ⟩ استيراد نموذج Roblox، واختر الملف الذي تم تنزيله. يتم تفكيك النموذج إلى عدة مجلدات.

  3. انسخ والصق أحد مقتطفات الشيفرة التالية في Script على الخادم داخل ServerScriptService، اعتمادًا على نوع الكائن الذي ترغب في إنشائه.

    هذه المثال يقوم بإنشاء سيارة وظيفية مع فرامل، ودفعة نيتروجين، وتأثيرات صوتية ومرئية، ومقياس سرعة على الشاشة.

    Script in ServerScriptService

    local GenerationService = game:GetService("GenerationService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local Workspace = game:GetService("Workspace")
    -- إعداد المدخلات للهندسة الناتجة
    local inputs = {
    TextPrompt = "سيارة تنين خضراء بأربع عجلات"
    }
    -- تعيين النمط إلى هيكل السيارة المحدد مسبقًا
    local schema = {
    PredefinedSchema = "Car5"
    }
    -- إجراء المكالمة لتوليد النموذج
    local success, result, metadata = pcall(function()
    return GenerationService:GenerateModelAsync(inputs, schema)
    end)
    if success then
    -- تغيير حجم النموذج إلى الحجم المستهدف
    local targetSize = 16
    local modelSize = result:GetExtentsSize()
    local scaleFactor = targetSize / math.max(modelSize.X, modelSize.Y, modelSize.Z)
    result:ScaleTo(scaleFactor)
    -- تحميل وحدة "makeFunctional" لسلوك "CarBehavior"
    local makeFunctional = require(ReplicatedStorage.Behaviors.CarBehavior.makeFunctional)
    -- الإشارة إلى أجزاء السيارة حسب الأسماء المضمونة من خلال نمط "Car5"
    local body = result:FindFirstChild("body")
    local frontLeftWheel = result:FindFirstChild("front left wheel")
    local frontRightWheel = result:FindFirstChild("front right wheel")
    local rearLeftWheel = result:FindFirstChild("rear left wheel")
    local rearRightWheel = result:FindFirstChild("rear right wheel")
    -- إعداد معلمات تكوين السلوك
    local config = {
    seatPosition = "inside",
    invisibleWhenSeated = false
    }
    -- إرفاق السلوك من خلال نص "makeFunctional"
    local functionalModel = makeFunctional(result, frontLeftWheel, frontRightWheel, rearLeftWheel, rearRightWheel, body, config)
    -- وضع النموذج بالقرب من مركز العالم
    functionalModel:PivotTo(CFrame.new(0, functionalModel:GetExtentsSize().Y / 2, -40))
    functionalModel.Name = "BasicDragonCarGeneration"
    functionalModel.Parent = Workspace
    else
    warn(result)
    end
©2026 شركة Roblox Corporation. تُعد منصّة Roblox، وشعار Roblox وشعار "توسيع حدود المخيلة"، من ضمن علاماتنا التجارية المسجّلة وغير المسجّلة في الولايات المتحدة وبلدان أخرى.