Module3D V6.1 (ViewportFrame Implementation)

Ah, its alive. I ended up just changing the part where it pans (model center) out to fit the whole model and changed it to only pan for the head. Works better now, prob should’ve looked at the module a bit harder my fault. Thanks for the responsiveness and keep up the great work!

What i was trying to accomplish:
image

This is a very useful Module the only probably I am having is when I put a Particle on a part and then use that part with 3D Module the particle won’t show on the part in the Frame is there any way to fix this?

Module3D V6 is limited to what ViewportFrames can do. They can’t display particles, so you won’t be able to use them with Module3D.

1 Like

Bummer it’s all good tho still a great plugin!

Amazing. One word explains it all.

Is there a version of this that uses the old method (Like v4) but doesn’t glitch your camera out like crazy? I was gonna try v5 but it’s taken down. I’m not going to be moving the frame much. It’ll be a still frame, however, I’d like to have particles on my model which is not possible using ViewportFrames.

V5 was taken down due to having awful performance. V4 is the last public version not to use ViewportFrames and I have no intention of supporting that use case in the future.

hm, I’ll have to try my hand at it in the future then. Thank you for replying :3

Hi,

I love this Module saves a lot of time, is it possible to move where the viewportframe is looking at a model? I want to show a tall model but want it to focus at the top

Thanks

SetCFrame is the only supported method to do this. You may find it easier to set up a ViewportFrame manually with the model and Camera rather than fight with Module3D. It wasn’t meant to do much for camera manipulation.

Sorry if I’m late here but is there an option to zoom in? Because I was fixing bugs and then suddenly the models appeared really small instead of their actual size. I’ll show you a photo:


And here’s a snippet of the code that uses Module3D V6:
local function onTemplatePress(temp)
selectedTemplate = temp
if selectedTemplate:FindFirstChild(“Equipped”).Value == true then
selectedTemplate.Checkmark.Visible = true
equipBTN.Text = “UNEQUIP”
else
selectedTemplate.Checkmark.Visible = false
equipBTN.Text = “EQUIP”
end
petNameDisplayInfo.Text = temp.Name

for i, v in pairs(displayPets:GetChildren()) do
	if v:IsA("ViewportFrame") then
		v:Destroy()
	end
end

local petModel = Module3D:Attach3D(displayPets,replicatedStorage.Pets:FindFirstChild(temp.Name, true):Clone())
petModel:SetDepthMultiplier(1.2)
petModel.Camera.FieldOfView = 5
petModel.Visible = true

runService.RenderStepped:Connect(function()
	petModel:SetCFrame(CFrame.Angles(0,tick() % (math.pi * 2),0) * CFrame.Angles(math.rad(-10),0,0))
end)

end

_G.newTemplate = function(petName)
local newTemplate = template:Clone()
newTemplate.Name = petName
newTemplate.Visible = true
newTemplate.Parent = container

local petModel = Module3D:Attach3D(newTemplate.Display,replicatedStorage.Pets:FindFirstChild(petName, true):Clone())
petModel:SetDepthMultiplier(1.2)
petModel.Camera.FieldOfView = 5
petModel.Visible = true

runService.RenderStepped:Connect(function()
	petModel:SetCFrame(CFrame.Angles(0,tick() % (math.pi * 2),0) * CFrame.Angles(math.rad(-10),0,0))
end)

newTemplate.MouseButton1Click:Connect(function()
	onTemplatePress(newTemplate)
end)

end
btw module3d is located in replicated storage