Jump to content

Tutorial How To Create a Stack of 3D Characters in Adobe Photoshop


Recommended Posts

One of my Spoon Graphics readers recently sent me an email with a great tutorial suggestion based on one of the promo graphics of the free font named Manrope. The cited artwork featured a collection of letters as long three dimensional shapes of varying heights, densely packed together in the scene. Clearly some kind of 3D modelling software was used to produce the original concept, but I experimented with Photoshop’s built-in 3D tools to see if a similar effect could be made. Follow along with today’s tutorial to learn how to use Photoshop’s 3D capabilities to create the effect yourself.


How To Create a Stack of 3D Characters in Adobe Photoshop

The artwork we’ll be creating in this tutorial features a bunch of long, extruded character shapes, arranged at various heights. By just configuring a few options, Photoshop’s 3D features then bring the effect to life with realistic perspective, shading and lighting.


Create a new document of around 2000x2000px in size. Set out the first of many letters as an individual text element using the font of your choice. Checking the Uppercase option will make it easier to edit each subsequent character without the need to hold the Shift key to capitalise the letter.


With the Move tool activated, hold the ALT key and drag a duplicate of the text element into some empty space. Double click to edits its contents and change the character. Continue duplicating the element to lay out the entire alphabet.


Neatly lay out all the characters in close proximity. Numerals can also be used to fill out any gaps within the composition.


Combine all the letters into one layer by activating the uppermost layer, then hold Shift and select the lowermost layer. Use the CMD+E shortcut for Merge Layers, then rename this layer to ‘Letters’.


To convert this flat artwork into 3D, go to 3D > New 3D Extrusion from Selected Layer. The Photoshop workspace will then switch to 3D mode.


In the 3D panel, activate the Letters object, then in the Properties panel, alter the X rotation value to 90° under the Coordinates section.


Activate ‘Current View’ in the 3D panel, then in the Properties panel change the view menu to Top.


Use the navigation tools in the top toolbar to orbit, pan and scale the view to effectively position the text at an angle.


By default, the 3D artwork is created as an Orthographic view, but checking the Perspective option in the Properties panel generates an alternative effect.


Select the Letters object again in the 3D panel, then go to the 3D menu and choose Split Extrusion to break it apart into individual letter shapes.


Click each letter shape in turn and use the blue arrowhead of the 3D tool to move the letter upwards or downwards along the Z axis.


Move each letter by a random amount to set the shapes at irregular heights.


To ensure no letters are floating in space, Shift-click to select all the letter elements in the 3D panel, then click the Move To Ground button in the Coordinates section of the Properties panel.


Activate ‘Current View’ again and reset the scene if necessary to centre up the 3D view within the canvas.


Select the Infinite Light element within the 3D panel and move the smaller handle of the on-screen icon to reposition the direction of the light.


In the Properties panel, increase the Softness of the shadow to around 70%.


Back in the 3D panel, select the first Front Inflation Material, then hold Shift and click the very last Back Inflation Material to make a selection of every single one in between.


In the Properties panel, change the Specular colour to white and reduce the Shine value to 0%.


The 3D effect currently doesn’t look great. It now needs rendering to process the finer lighting effects. Go to 3D > Render 3D Layer, then sit back and wait it to complete. After a few passes once the bulk of the shading has been established, you can press the Escape key to stop the rendering. Stopping the render early does leave some subtle grain behind, rather than a perfectly smooth surface, but it can actually enhance the artwork.


To avoid making any changes to the 3D layer and have to render all over again, use the CMD+Shift+E shortcut to make a merged copy of the artwork on a new layer.

How To Create a Stack of 3D Characters in Adobe Photoshop

The final result is a cool 3D composition of extruded letter shapes with realistic shading and lighting effects. This artwork was left with a basic grey appearance, but Photoshop colour adjustments, or alternative surface effects could be used to enhance the effect further.



Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Posts

    • Hello everyone, I have a problem running the server connected everything is fine I try to go moving instead of some printers but don't go. Trying to move but not moving as if something was interfering with the admin I tried not to walk and beat.
    • You can pm Java developer @Zake to fix it with price.
    • Stop use packs without source.
    • pws mporw auto to code anti na allazei to xroma ston titlo na allazei to name tou titlou? sto config ekei 8elw poio poli thanks ### Eclipse Workspace Patch 1.0 #P aCis_gameserver Index: config/players.properties =================================================================== --- config/players.properties (revision 2) +++ config/players.properties (working copy) @@ -288,4 +288,12 @@ MaxBuffsAmount = 20 # Store buffs/debuffs on user logout? -StoreSkillCooltime = True \ No newline at end of file +StoreSkillCooltime = True + +#============================================================= +# Config Color PvP System +#============================================================= +# PvP Title color system. +AllowPvpTitleColorSystem = True +# PvP Title colors, works like: pvps,color;pvps,color; +PvpColors = 100,00FFFF;200,FFFF00;400,8E236B;600,FF2400;1000,0000FF;2000,FF00FF;5000,000000;10000,545454;15000,FF0000; Index: java/net/sf/l2j/Config.java =================================================================== --- java/net/sf/l2j/Config.java (revision 2) +++ java/net/sf/l2j/Config.java (working copy) @@ -24,7 +24,9 @@ import java.math.BigInteger; import java.util.ArrayList; import java.util.Arrays; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.Properties; import java.util.StringTokenizer; import java.util.logging.Logger; @@ -484,6 +486,10 @@ public static boolean STORE_SKILL_COOLTIME; public static int BUFFS_MAX_AMOUNT; + /** PvP Color System */ + public static boolean ALLOW_PVP_TITLE_COLOR_SYSTEM; + public static Map<Integer, Integer> PVP_COLORS = new HashMap<>(); + // -------------------------------------------------- // Server // -------------------------------------------------- @@ -1089,7 +1095,16 @@ BUFFS_MAX_AMOUNT = players.getProperty("MaxBuffsAmount", 20); STORE_SKILL_COOLTIME = players.getProperty("StoreSkillCooltime", true); + ALLOW_PVP_TITLE_COLOR_SYSTEM = Boolean.parseBoolean(players.getProperty("AllowPvpTitleColorSystem", "false")); + String pvp_colors = players.getProperty("PvpColors", "100,FFFF00"); + String pvp_colors_splitted_1[] = pvp_colors.split(";"); + for (String s : pvp_colors_splitted_1) + { + String pvp_colors_splitted_2[] = s.split(","); + PVP_COLORS.put(Integer.parseInt(pvp_colors_splitted_2[0]), Integer.decode("0x"+pvp_colors_splitted_2[1])); + } + // server ExProperties server = load(SERVER_FILE); Index: java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java =================================================================== --- java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (revision 2) +++ java/net/sf/l2j/gameserver/network/clientpackets/EnterWorld.java (working copy) @@ -256,6 +256,10 @@ // Attacker or spectator logging into a siege zone will be ported at town. if (!activeChar.isGM() && (!activeChar.isInSiege() || activeChar.getSiegeState() < 2) && activeChar.isInsideZone(ZoneId.SIEGE)) activeChar.teleToLocation(MapRegionTable.TeleportWhereType.Town); + if (Config.ALLOW_PVP_TITLE_COLOR_SYSTEM) + { + activeChar.colorsCheck(); + } } private static void engage(L2PcInstance cha) Index: java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java =================================================================== --- java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (revision 2) +++ java/net/sf/l2j/gameserver/model/actor/instance/L2PcInstance.java (working copy) @@ -1909,7 +1909,21 @@ { return _pvpKills; } - + public void colorsCheck() + { + if (Config.ALLOW_PVP_TITLE_COLOR_SYSTEM) + { + for (int i : Config.PVP_COLORS.keySet()) + { + if (getPvpKills() >= i) + { + getAppearance().setTitleColor(Config.PVP_COLORS.get(i)); + broadcastUserInfo(); + } + } + } + } + /** * Set PvP Kills of the L2PcInstance (number of player killed during a PvP). * @param pvpKills A value. @@ -4283,7 +4297,10 @@ { // Add PvP point to attacker. setPvpKills(getPvpKills() + 1); - + if (Config.ALLOW_PVP_TITLE_COLOR_SYSTEM) + { + colorsCheck(); + } // Send a Server->Client UserInfo packet to attacker with its Karma and PK Counter sendPacket(new UserInfo(this)); }  
    • this is the material make it crash, Transient.ShadowBitmapMaterial16), something changed or edited in maps or called to function in NPC to make it crash, because it make reference to map 22_22 like say Rolo.
  • Topics

  • Create New...

AdBlock Extension Detected!

Our website is made possible by displaying online advertisements to our members.

Please disable AdBlock browser extension first, to be able to use our community.

I've Disbaled AdBlock