Roblox Tree Free Models

Roblox 3D models ready to view, buy, and download for free.

15 min

Adding props like trees and plants makes game environments feel more realistic. Prop models can be made by grouping together basic parts. When designing props, look to real life for inspiration. The tree in this example is inspired by this laurel tree found near the Parthenon in Athens, Greece.

Roblox Tree Free Models Pictures


Roblox

You’ll use a cylinder part to make the tree trunk before creating the branches and leaves.

  1. In the Home tab, add a Cylinder part.
  1. In the Workspace, rename the Cylinder part Trunk.

  2. To change the material, in the Home tab, click the arrow under Material and select wood.

  3. Still in the Home tab, click the arrow under Color and pick any brown.

Free

Rotate the Trunk

To rotate and move the pieces of the tree so that they look natural, you’ll need to make sure Collisions and Snap to Grid - Rotate are turned off. Collisions keeps things from running into each other, while snap to grid only allows objects to rotate or move so much at a time.

  1. In the Model tab, inside the Snap to Grid section, uncheck Rotate so that you can freely rotate the trunk.
  1. In the Model tab, rotate and scale the Trunk so it’s upright.

Adding Branches

Next, duplicate the trunk to create branches for the tree. It might look like nothing has happened because the new part will be in the exact same place as the original.

  1. Right-click Trunk and select Duplicate.
  1. In the Explorer, rename the new part Branch.
  2. Scale the part down.
  1. Rotate and Move the branch into place. If you’re having trouble, make sure snapping and collisions are off.

Duplicating More Branches

The same branch can be duplicated to quickly make more.

  1. In Explorer, right-click the branch and select Duplicate. Then, rotate and move the branch to another part of the tree.
  1. Add two to five more branches of different sizes.
Change Your View As You Build

As you add and rotate branches, move your camera around and make sure the tree looks good from all sides.


Making a Ball of Leaves

Next, group a spheres together to make a ball of leaves for the tree.

  1. Create a Sphere from the part menu. Change the material and color, and then rename the sphere Leaves.
  1. Duplicate the sphere two to four times to make a ball of leaves.
  1. In the Explorer, while holding Shift , select all the spheres.
  1. In the Home tab, click Group. The spheres will be grouped into one model. Rename the model LeafBall.
  1. Move the leaf ball onto a branch.

Roblox Tree Model

  1. Duplicate, the leaf ball until you have 3 - 5 on the tree. Rotate and scale each leaf ball to make it slightly different.

To make a prop model that can be reused, anchor all of the parts in place and then group the parts into a single model.

  1. Select all parts of the tree.

  2. In the Home tab, click Anchor. If Anchored, it will be highlighted dark grey. If you don’t anchor the parts, the tree will fall apart in game.

  1. Still with all parts selected, in the Home tab, click Group. Rename the model Tree.

Setting The Primary Part

The last step in creating a model is setting the primary part, which is used for determining the position of the model.

To set the primary part:

  1. In the Explorer, expand the tree model by clicking the arrow next to it. This will let you see all of the parts in the model.
  1. Make sure the top-level tree model is still selected. In the Properties window, click PrimaryPart and then, back in the Explorer window, click Trunk.

Make it look like there are more tree models than you actually built in your environment by rotating and scaling the model a little bit each time you use it. You may have noticed other games you’ve played do this quite often.

Building Other Types of Models

Use the same technique to create bushes, flowers, and plants.


Related Articles

Jan 21st, 2017

Roblox Tree Free Models Download

Never
Not a member of Pastebin yet?Sign Up, it unlocks many cool features!

Roblox Tree Free Models For Beginners

  1. local child = parent:findFirstChild(childName)
  2. while true do
  3. if child.NamechildName then return child end
  4. end
  5. local Figure = script.Parent
  6. local RightShoulder = waitForChild(Torso, 'Right Shoulder')
  7. local LeftShoulder = waitForChild(Torso, 'Left Shoulder')
  8. local RightHip = waitForChild(Torso, 'Right Hip')
  9. local Neck = waitForChild(Torso, 'Neck')
  10. local Humanoid = waitForChild(Figure, 'Humanoid')
  11. local currentAnimInstance = nil
  12. local currentAnimKeyframeHandler = nil
  13. local animTable = {}
  14. idle = {
  15. { id = 'http://www.roblox.com/asset/?id=180435571', weight = 9 },
  16. { id = 'http://www.roblox.com/asset/?id=180435792', weight = 1 }
  17. walk = {
  18. { id = 'http://www.roblox.com/asset/?id=180426354', weight = 10 }
  19. run = {
  20. },
  21. { id = 'http://www.roblox.com/asset/?id=125750702', weight = 10 }
  22. fall = {
  23. { id = 'http://www.roblox.com/asset/?id=180436148', weight = 10 }
  24. climb = {
  25. { id = 'http://www.roblox.com/asset/?id=180436334', weight = 10 }
  26. sit = {
  27. { id = 'http://www.roblox.com/asset/?id=178130996', weight = 10 }
  28. toolnone = {
  29. { id = 'http://www.roblox.com/asset/?id=182393478', weight = 10 }
  30. toolslash = {
  31. { id = 'http://www.roblox.com/asset/?id=129967390', weight = 10 }
  32. },
  33. { id = 'http://www.roblox.com/asset/?id=129967478', weight = 10 }
  34. wave = {
  35. { id = 'http://www.roblox.com/asset/?id=128777973', weight = 10 }
  36. point = {
  37. { id = 'http://www.roblox.com/asset/?id=128853357', weight = 10 }
  38. dance1 = {
  39. { id = 'http://www.roblox.com/asset/?id=182435998', weight = 10 },
  40. { id = 'http://www.roblox.com/asset/?id=182491037', weight = 10 },
  41. { id = 'http://www.roblox.com/asset/?id=182491065', weight = 10 }
  42. dance2 = {
  43. { id = 'http://www.roblox.com/asset/?id=182436842', weight = 10 },
  44. { id = 'http://www.roblox.com/asset/?id=182491248', weight = 10 },
  45. { id = 'http://www.roblox.com/asset/?id=182491277', weight = 10 }
  46. dance3 = {
  47. { id = 'http://www.roblox.com/asset/?id=182436935', weight = 10 },
  48. { id = 'http://www.roblox.com/asset/?id=182491368', weight = 10 },
  49. { id = 'http://www.roblox.com/asset/?id=182491423', weight = 10 }
  50. laugh = {
  51. { id = 'http://www.roblox.com/asset/?id=129423131', weight = 10 }
  52. cheer = {
  53. { id = 'http://www.roblox.com/asset/?id=129423030', weight = 10 }
  54. }
  55. -- Existance in this list signifies that it is an emote, the value indicates if it is a looping emote
  56. local emoteNames = { wave = false, point = false, dance1 = true, dance2 = true, dance3 = true, laugh = false, cheer = false}
  57. function configureAnimationSet(name, fileList)
  58. for _, connection in pairs(animTable[name].connections) do
  59. end
  60. animTable[name] = {}
  61. animTable[name].totalWeight = 0
  62. local config = script:FindFirstChild(name)
  63. -- print('Loading anims ' .. name)
  64. table.insert(animTable[name].connections, config.ChildAdded:connect(function(child) configureAnimationSet(name, fileList) end))
  65. table.insert(animTable[name].connections, config.ChildRemoved:connect(function(child) configureAnimationSet(name, fileList) end))
  66. for _, childPart in pairs(config:GetChildren()) do
  67. table.insert(animTable[name].connections, childPart.Changed:connect(function(property) configureAnimationSet(name, fileList) end))
  68. animTable[name][idx].anim = childPart
  69. local weightObject = childPart:FindFirstChild('Weight')
  70. animTable[name][idx].weight = 1
  71. animTable[name][idx].weight = weightObject.Value
  72. animTable[name].count = animTable[name].count + 1
  73. animTable[name].totalWeight = animTable[name].totalWeight + animTable[name][idx].weight
  74. -- print(name .. ' [' .. idx .. '] ' .. animTable[name][idx].anim.AnimationId .. ' (' .. animTable[name][idx].weight .. ')')
  75. end
  76. end
  77. -- fallback to defaults
  78. for idx, anim in pairs(fileList) do
  79. animTable[name][idx].anim = Instance.new('Animation')
  80. animTable[name][idx].anim.AnimationId = anim.id
  81. animTable[name].count = animTable[name].count + 1
  82. animTable[name].totalWeight = animTable[name].totalWeight + anim.weight
  83. -- print(name .. ' [' .. idx .. '] ' .. anim.id .. ' (' .. anim.weight .. ')')
  84. end
  85. function scriptChildModified(child)
  86. if (fileList ~= nil) then
  87. end
  88. script.ChildRemoved:connect(scriptChildModified)
  89. configureAnimationSet(name, fileList)
  90. local toolAnim = 'None'
  91. local jumpAnimDuration = 0.3
  92. local toolTransitionTime = 0.1
  93. local jumpMaxLimbVelocity = 0.75
  94. -- functions
  95. function stopAllAnimations()
  96. if (emoteNames[oldAnim] ~= nil and emoteNames[oldAnim] false) then
  97. end
  98. currentAnim = '
  99. if (currentAnimKeyframeHandler ~= nil) then
  100. end
  101. if (currentAnimTrack ~= nil) then
  102. currentAnimTrack:Destroy()
  103. end
  104. end
  105. function setAnimationSpeed(speed)
  106. currentAnimSpeed = speed
  107. end
  108. if (frameName 'End') then
  109. local repeatAnim = currentAnim
  110. if (emoteNames[repeatAnim] ~= nil and emoteNames[repeatAnim] false) then
  111. end
  112. local animSpeed = currentAnimSpeed
  113. setAnimationSpeed(animSpeed)
  114. end
  115. -- Preload animations
  116. function playAnimation(animName, transitionTime, humanoid)
  117. local roll = math.random(1, animTable[animName].totalWeight)
  118. local idx = 1
  119. while (roll > animTable[animName][idx].weight) do
  120. idx = idx + 1
  121. -- print(animName .. ' ' .. idx .. ' [' .. origRoll .. ']')
  122. if (anim ~= currentAnimInstance) then
  123. if (currentAnimTrack ~= nil) then
  124. currentAnimTrack:Destroy()
  125. currentAnimTrack = humanoid:LoadAnimation(anim)
  126. -- play the animation
  127. currentAnim = animName
  128. if (currentAnimKeyframeHandler ~= nil) then
  129. end
  130. currentAnimKeyframeHandler = currentAnimTrack.KeyframeReached:connect(keyFrameReachedFunc)
  131. end
  132. end
  133. -------------------------------------------------------------------------------------------
  134. -------------------------------------------------------------------------------------------
  135. local toolAnimName = '
  136. local toolAnimInstance = nil
  137. if (frameName 'End') then
  138. playToolAnimation(toolAnimName, 0.0, Humanoid)
  139. end
  140. function playToolAnimation(animName, transitionTime, humanoid)
  141. local roll = math.random(1, animTable[animName].totalWeight)
  142. local idx = 1
  143. while (roll > animTable[animName][idx].weight) do
  144. idx = idx + 1
  145. -- print(animName .. ' * ' .. idx .. ' [' .. origRoll .. ']')
  146. toolAnimTrack:Stop()
  147. transitionTime = 0
  148. toolAnimTrack = humanoid:LoadAnimation(anim)
  149. -- play the animation
  150. toolAnimName = animName
  151. currentToolAnimKeyframeHandler = toolAnimTrack.KeyframeReached:connect(toolKeyFrameReachedFunc)
  152. end
  153. function stopToolAnimations()
  154. currentToolAnimKeyframeHandler:disconnect()
  155. toolAnimInstance = nil
  156. toolAnimTrack:Stop()
  157. toolAnimTrack = nil
  158. return oldAnim
  159. -------------------------------------------------------------------------------------------
  160. -------------------------------------------------------------------------------------------
  161. if speed>0.01 then
  162. if currentAnimInstance and currentAnimInstance.AnimationId 'http://www.roblox.com/asset/?id=180426354' then
  163. end
  164. else
  165. playAnimation('idle', 0.1, Humanoid)
  166. end
  167. end
  168. function onDied()
  169. end
  170. function onJumping()
  171. jumpAnimTime = jumpAnimDuration
  172. end
  173. function onClimbing(speed)
  174. setAnimationSpeed(speed / 12.0)
  175. end
  176. function onGettingUp()
  177. end
  178. function onFreeFall()
  179. playAnimation('fall', fallTransitionTime, Humanoid)
  180. pose = 'FreeFall'
  181. pose = 'FallingDown'
  182. pose = 'Seated'
  183. pose = 'PlatformStanding'
  184. if speed>0 then
  185. else
  186. end
  187. for _, kid in ipairs(Figure:GetChildren()) do
  188. end
  189. end
  190. function getToolAnim(tool)
  191. if c.Name 'toolanim' and c.className 'StringValue' then
  192. end
  193. return nil
  194. playToolAnimation('toolnone', toolTransitionTime, Humanoid)
  195. end
  196. if (toolAnim 'Slash') then
  197. return
  198. playToolAnimation('toollunge', 0, Humanoid)
  199. end
  200. RightShoulder.MaxVelocity = 0.15
  201. RightShoulder:SetDesiredAngle(3.14 /2)
  202. RightHip:SetDesiredAngle(3.14 /2)
  203. end
  204. local lastTick = 0
  205. function move(time)
  206. local frequency = 1
  207. lastTick = time
  208. local climbFudge = 0
  209. jumpAnimTime = jumpAnimTime - deltaTime
  210. if (pose 'FreeFall' and jumpAnimTime <= 0) then
  211. playAnimation('fall', fallTransitionTime, Humanoid)
  212. playAnimation('sit', 0.5, Humanoid)
  213. elseif (pose 'Running') then
  214. elseif (pose 'Dead' or pose 'GettingUp' or pose 'FallingDown' or pose 'Seated' or pose 'PlatformStanding') then
  215. stopAllAnimations()
  216. frequency = 1
  217. end
  218. if (setAngles) then
  219. desiredAngle = amplitude * math.sin(time * frequency)
  220. RightShoulder:SetDesiredAngle(desiredAngle + climbFudge)
  221. LeftShoulder:SetDesiredAngle(desiredAngle - climbFudge)
  222. LeftHip:SetDesiredAngle(-desiredAngle)
  223. local tool = getTool()
  224. toolAnim = animStringValueObject.Value
  225. animStringValueObject.Parent = nil
  226. end
  227. if time > toolAnimTime then
  228. toolAnim = 'None'
  229. else
  230. toolAnim = 'None'
  231. toolAnimTime = 0
  232. end
  233. -- connect events
  234. Humanoid.Running:connect(onRunning)
  235. Humanoid.Climbing:connect(onClimbing)
  236. Humanoid.FreeFalling:connect(onFreeFall)
  237. Humanoid.Seated:connect(onSeated)
  238. Humanoid.PlatformStanding:connect(onPlatformStanding)
  239. game.Players.LocalPlayer.Chatted:connect(function(msg)
  240. if msg '/e dance' then
  241. elseif (string.sub(msg, 1, 3) '/e ') then
  242. elseif (string.sub(msg, 1, 7) '/emote ') then
  243. end
  244. if (pose 'Standing' and emoteNames[emote] ~= nil) then
  245. end
  246. end)
  247. playAnimation('idle', 0.1, Humanoid)
  248. local _, time = wait(0.1)
  249. end

Roblox Tree Free Models Free