การสร้างโมเดล

*เนื้อหานี้แปลโดยใช้ AI (เวอร์ชัน Beta) และอาจมีข้อผิดพลาด หากต้องการดูหน้านี้เป็นภาษาอังกฤษ ให้คลิกที่นี่

ผ่านข้อความตัวชี้และสคีมาที่กำหนดไว้ล่วงหน้า คุณ (และผู้เล่นในเกม) สามารถสร้างทั้งทรัพย์สิน 3D แบบสแตติกและโมเดลที่ ทำงานได้เต็มรูปแบบ เช่น ยานพาหนะที่ขับได้ เครื่องบินที่บินได้ และอาวุธที่ยิงได้ คู่มือนี้จะแสดงวิธีการใช้ GenerateModelAsync() เป็นส่วนหนึ่งของประสบการณ์ที่สร้างสรรค์โดยผู้เล่นอย่างไดนามิก

ภาพรวม

GenerateModelAsync() ช่วยให้สามารถสร้างเรขาคณิตแบบมัลติเกลได้โดยมีข้อดีดังนี้:

  • สคีมา ที่กำหนดไว้นั้นอธิบายว่าเรขาคณิตที่สร้างขึ้นจะถูกแบ่งออกเป็นส่วนอย่างไร
  • วัตถุใด ๆ ที่สร้างขึ้นในเกมจะถูกจำลองและมองเห็นได้โดยผู้เล่นทุกคน ทำให้พวกเขาสามารถสร้างร่วมกันได้แบบเรียลไทม์
  • เรขาคณิตที่สร้างขึ้นมีความละเอียดสูงกว่า รูปร่างโดยรวมที่ดีขึ้น ซิลลูเอตที่มีรายละเอียดมากขึ้น และมีข้อบกพร่องน้อยลง ข้อความที่สร้างขึ้นมีความสอดคล้องและมีรายละเอียดมากขึ้น โดยมีความหยาบกร้านน้อยลงและแสงที่ถูกกลั่นกรองน้อยลง
  • เวลาในการสร้างมีความหน่วงต่ำกว่า ทำให้การสร้างในเกมเร็วและตอบสนองได้ดีขึ้น
  • คุณและแม้กระทั่งผู้เล่นในระหว่างเกมสามารถกำหนดกล่องขอบเขตเพื่อแนะนำขนาดและสัดส่วนของโมเดลที่สร้างขึ้น
  • จำนวนสามเหลี่ยมสูงสุดที่เลือกได้ช่วยให้วัตถุที่สร้างขึ้นทำงานได้ดีในเกมของคุณ

การสร้างตามสคีมา

เพื่อสร้างวัตถุที่มีการเคลื่อนไหวและทำงานได้ เรขาคณิตที่สร้างขึ้นจะต้องถูกแยกออกเป็น MeshParts หลายส่วน ตัวอย่างเช่น เพื่อสร้างรถยนต์ที่ขับได้ โดยมีล้อที่หมุนและเลี้ยว จะต้องมี MeshParts อย่างน้อยห้าชิ้น: หนึ่งชิ้นสำหรับตัวรถและสี่ชิ้นสำหรับล้อทั้งสี่ของรถ GenerateModelAsync() บรรลุสิ่งนี้ผ่าน สคีมา ที่ระบุรายชื่อส่วนที่ต้องสร้าง แสดงในโค้ดตัวอย่างดังต่อไปนี้:

สคริปต์ใน ServerScriptService

local GenerationService = game:GetService("GenerationService")
local Workspace = game:GetService("Workspace")
-- ตั้งค่าข้อมูลนำเข้าสำหรับเรขาคณิตที่สร้างขึ้น
local inputs = {
TextPrompt = "รถมังกรสีเขียวที่มีล้อ 4 อัน"
}
-- ตั้งค่าสคีมาให้เป็นตัวถังรถห้านำที่กำหนดไว้ล่วงหน้า
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
-- ตั้งชื่อโมเดลและทำให้มันเป็นบุตรใน workspace
result.Name = "การสร้างรถมังกรพื้นฐาน"
result.Parent = Workspace
else
warn(result)
end

ภาพต่อไปนี้แสดงผลลัพธ์ที่คาดหวังและการก่อสร้างของมันตามที่ปรากฏในลำดับชั้นของ Explorer:

สคริปต์ที่ปรับเปลี่ยนได้

ใน Roblox, พฤติกรรม มักจะครอบคลุมถึงสคริปต์ แattachments, ข้อกำหนด และประเภทของอินสแตนซ์อื่น ๆ ที่เชื่อมต่อกับเรขาคณิตที่มีลวดลายแบบสแตติกเพื่อทำให้มันทำงานได้ เนื่องจาก GenerateModelAsync() สร้างเรขาคณิตได้หลากหลายแบบแบบเรียลไทม์, สคริปต์ที่ปรับเปลี่ยนได้ ต้องถูกแนบเพื่อตอบสนองพฤติกรรมให้เข้ากับฟังก์ชันที่คาดหวัง

ตัวอย่างเช่น พิจารณาเกมที่ผู้เล่นสามารถทำรถยนต์ที่ขับได้ของตนเองได้ GenerateModelAsync() จะใช้ข้อความตัวชี้ของผู้เล่นและสร้างเรขาคณิตที่แตกต่างกันห้าชิ้น (ตัวถังและล้อสี่ล้อ) ผ่าน Car5 สคีมา จากนั้น สคริปต์ที่ปรับเปลี่ยนได้ล่วงหน้าจะปรับพฤติกรรมการขับรถให้เข้ากับขนาดและรูปทรงของโมเดลเพื่อให้แน่ใจว่ารถยนต์สามารถขับได้และล้อหมุนอย่างสมจริง

ในการทดสอบสคริปต์ที่ปรับเปลี่ยนได้:

  1. ดาวน์โหลดไฟล์ Behaviors.rbxm

  2. ในลำดับชั้นของ Explorer ของ Studio คลิกขวาที่ ReplicatedStorage เลือก Insert ⟩ Import Roblox Model, และเลือกไฟล์ที่ดาวน์โหลดมา โมเดลจะแยกออกเป็นหลายโฟลเดอร์

  3. คัดลอกและวางหนึ่งในโค้ดตัวอย่างด้านล่างนี้ลงใน Script ที่อยู่ใน ServerScriptService ขึ้นอยู่กับประเภทของวัตถุที่คุณต้องการสร้าง

    ตัวอย่างนี้สร้างรถยนต์ที่ทำงานได้พร้อมด้วยเบรก การเร่งความเร็วด้วยไนตรัส เสียงและเอฟเฟกต์ภาพ และหน้าจอ UI สำหรับวัดความเร็ว

    สคริปต์ใน ServerScriptService

    local GenerationService = game:GetService("GenerationService")
    local ReplicatedStorage = game:GetService("ReplicatedStorage")
    local Workspace = game:GetService("Workspace")
    -- ตั้งค่าข้อมูลนำเข้าสำหรับเรขาคณิตที่สร้างขึ้น
    local inputs = {
    TextPrompt = "รถมังกรสีเขียวที่มีล้อ 4 อัน"
    }
    -- ตั้งค่าสคีมาให้เป็นตัวถังรถห้านำที่กำหนดไว้ล่วงหน้า
    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" schema
    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 = "การสร้างรถมังกรพื้นฐาน"
    functionalModel.Parent = Workspace
    else
    warn(result)
    end
©2026 Roblox Corporation. Roblox, โลโก้ Roblox และ Powering Imagination เป็นส่วนหนึ่งของเครื่องหมายการค้าที่จดทะเบียน และไม่ได้จดทะเบียนของเราในสหรัฐฯ และประเทศอื่นๆ