Difference between revisions of "Team Fortress Wiki:3D Models"

From Team Fortress Wiki
Jump to: navigation, search
(Finished weapons)
m (Uploading your image)
 
(110 intermediate revisions by 17 users not shown)
Line 1: Line 1:
 +
{{Help navbar}}
 
The '''3D Models''' project's goal is to construct pseudo-3D images of the weapons in ''Team Fortress 2'' that can be freely rotated.
 
The '''3D Models''' project's goal is to construct pseudo-3D images of the weapons in ''Team Fortress 2'' that can be freely rotated.
  
Line 11: Line 12:
  
 
== Requirements ==
 
== Requirements ==
*[http://www.python.org/downloads/ Python 2.7.11 (32-bit version)] <!-- Language, 32 bit because ? -->
+
* [https://www.microsoft.com/windows Windows]
*[http://www.pythonware.com/products/pil/ Python Imaging Library 1.1.7 (PIL)]
+
* [https://store.steampowered.com/app/440/Team_Fortress_2 TF2]
*[http://www.microsoft.com/en-us/download/details.aspx?id=44266 Visual C++ Compiler for Python 2.7] <!-- SendKeys dependency -->
+
* HLMV (included as a part of TF2)
*[http://pypi.python.org/pypi/SendKeys/0.3 SendKeys 0.3] <!-- Used to work with HLMV -->
+
** (optionally) [[vdc:Half-Life Model Viewer++|HLMV++]]
*[http://sourceforge.net/projects/pywin32/files/pywin32/ pywin32 build 220] <!-- win32gui --> Be sure to get the win32 version!
+
* [https://www.python.org/downloads/release/python-379 Python 3.7.9]
*[http://github.com/alexz-enwp/wikitools/releases/latest Wikitools 1.3] <!-- Used for file upload -->
+
* [https://github.com/jbzdarkid/3D-Models-automaton/releases/latest/download/3D-Models-automation.zip A copy of the automaton repository]
*[http://github.com/jbzdarkid/3D-Models-automaton The automaton script]
 
*[http://github.com/numpy/numpy/releases NumPy 1.11] <!-- Cropping images -->
 
*(''Optional'') [http://www.voidspace.org.uk/downloads/psyco-2.0.0.win32-py2.6.zip Psyco] for speed improvements (available for 32-bit Python only)
 
*(''Optional'') [https://pypi.python.org/pypi/poster/ Poster] if you want to upload through the script
 
 
 
'''OR'''
 
 
 
*[https://www.mediafire.com/?039xmk02b2ziruk Preinstalled image of the Python installation with all modules] ('''STRONGLY RECOMMENDED''')
 
 
 
Also:
 
*[http://go.microsoft.com/?linkid=7729279 Visual C++ 2008 Express Edition with SP1] ('''Must be 2008''', more recent versions will not work. Untick SQL server option) (vcsetup.exe)
 
*[http://www.mediafire.com/download/2i3das2jx2v5fd6/BlackFirePlusBlackBackground.zip The background and fire textures]
 
  
 
== Initial setup ==
 
== Initial setup ==
 
=== Installation ===
 
=== Installation ===
* Manual python install:
+
Please follow the latest instructions at [https://github.com/jbzdarkid/3D-Models-automaton#installation-steps the 3D-Models-automaton repo].
** Install Python 2.7, Visual Studio, NumPy, and cython
 
** Install SendKeys, pywin32, and PIL
 
* Otherwise extract the zipped Python folder somewhere.
 
* Download and save the automaton scripts to an easily accessible folder.
 
* Extract the BlackFirePlusBlackBackground.zip file, and copy the contents to {{code|\Steam\steamapps\common\Team Fortress 2\tf\custom\}}.
 
* Set up HLMV to produce the highest quality images possible by following the guide found [[Help:Model_Viewer#Setup|here]].
 
* Be sure to start TF2 at least once so that it maps your custom folders (for material overrides) and to generate gameinfo.txt.
 
 
 
=== Setting up automatebeta.py ===
 
[[File:3D Tutorial HLMV Coordinates.png|400px|thumb|HLMV screen where 1 is the location of {{code|fileButtonCoordinates}}, 2 is the location of {{code|optionsButtonCoordinates}}, and 3 is the boundary for {{code|imgCropBoundaries}}.]]
 
* Open HLMV and maximize it.
 
* Take a screenshot and paste it into an image viewer such as paint.NET or Adobe Photoshop.
 
* Take note of the following pixel coordinates for your screen size.
 
** {{code|imgCropBoundaries}} is the boundary of the window the model in HLMV is contained within. The format is;
 
*** <nowiki>[pixel distance of left boundary from left of screen, pixel distance of top boundary from top of screen, pixel distance of right boundary from left of screen, pixel distance of bottom boundary from top of screen]</nowiki>
 
*** You should leave a few pixels gap from the window edge.
 
* {{code|fileButtonCoordinates}} is a tuple of the center x,y coordinates for the File menu button in HLMV. Likely, you don't have to change this.
 
* Close any programs that may pop up or take mouse control, as they might interfere with the process.
 
  
 
== Workflow ==
 
== Workflow ==
 
=== Taking images ===
 
=== Taking images ===
* Open up a weapon model in HLMV and center the model using Options &rarr; Center View.
+
* Open up the weapon in HLMV and ensure it rotates properly. There are three possible outcomes here:
 +
** The model will rotate around the bottom corner of the model. If so, you will need to make use of <code>rotation_offset</code>.
 +
*** First, reset the model's position with Options &rarr; Center View.
 +
*** Then, from <code>cmd</code>, navigate to the folder containing <code>automate.py</code> and run <code>mem trans</code>, noting the second value (the Y translation).
 +
*** Back in HLMV, rotate the model so that it is facing right. Hold down {{Key|Shift}} and move the model sideways so that it is centered in the circle that appears.
 +
*** Go back to <code>cmd</code>, and run <code>mem trans</code> again, once again noting the second value.
 +
*** The difference between the current value and the initial value is the <code>rotation_offset</code> value to set in <code>automate.py</code>.
 +
** The model will rotate around the wrong plane or the model will not rotate around the vertical or horizontal center. If so, the model will need to be [[#Recompiling models|recompiled]].
 +
** The model will rotate around the vertical '''and''' horizontal center of the model. If so, you are good to go.
 +
* Center the model using Options &rarr; Center View.
 
* If the model does not face you directly when centered, it will need to be [[#Recompiling models|recompiled]] with a new rotation.
 
* If the model does not face you directly when centered, it will need to be [[#Recompiling models|recompiled]] with a new rotation.
 
* Zoom the model out so that it is as large as possible, but will not clip outside the viewer window when rotated or tilted.
 
* Zoom the model out so that it is as large as possible, but will not clip outside the viewer window when rotated or tilted.
 
* If the light source produces a glare that interferes with the model, hold {{Key|Ctrl}} and drag the light source around with the mouse until it is in a better position.
 
* If the light source produces a glare that interferes with the model, hold {{Key|Ctrl}} and drag the light source around with the mouse until it is in a better position.
* Open regedit, navigate to {{code|\HKEY_CURRENT_USER\Software\Valve\hlmv}}, and locate the registry key entry for the model. This will be in the form of {{code|models.weapons.c_models.c_wrench.c_wrench.mdl}}.
+
* Run the script, from the command line. Navigate to the folder containing the scripts and type <code>python automate.py</code>.
* Copy and paste this key name into automatebeta.py in the HLMVModelRegistryKey().
+
* After the image finishes rotating, switch back to the command line and follow the prompts to upload the file.
* Copy the {{code|Trans}} key entry for the model as the {{code|intialTranslation}} argument. Don't forget to add the commas to separate the values!
 
* Rotate the model by dragging near the center of the viewer.
 
* There will be three possible outcomes here.
 
** The model will rotate around the bottom corner of the model. If so, you will need to make use of {{code|rotationOffset}}.
 
*** Rotate the model so that it is facing left. Hold down {{Key|Shift}} and move the model sideways so that it is centered in the circle that appears.
 
*** Press {{Key|F5}} in HLMV, and then in regedit. Note the new 'y' Trans value. The difference between the current value and the initial value is the {{code|rotationOffset}} value.
 
** The model will rotate around the wrong plane or the model will not rotate around the vertical or horizontal center. If so, the model will need to be [[#Recompiling models|recompiled]].
 
** The model will rotate around the vertical '''and''' horizontal center of the model. If so, you are good to go.
 
* Set the item name in the script for {{code|itemName}}. It is suggested you initially set this to 'User <username> <item>' so you can see the item looks fine before being moved to the correct title.
 
* Now you can run the script, from the command line. Navigate to the folder containing the scripts and type <code>python automatebeta.py</code>.
 
* You will be asked to enter the folder name for the generated images.
 
* The script will now automate taking the required images. It is best not to try and use your computer while the script is running as it will likely result in an incorrect output.
 
** To interrupt the image taking process, turn on Num Lock.
 
  
 
=== Team-colored models ===
 
=== Team-colored models ===
* Extract the VMTs for the model from the {{code|tf2_misc_dir.vpk}} appropriate folder directories in the {{code|/custom/folder}}.
+
* This is now very simple, simply change this in HLMV (Model &rarr; Skin #), then re-run the script.
* In the automatebeta.py script, set {{code|teamColours}} to {{code|True}} and set the paths to the VMTs with {{code|REDVMTFiles}} and {{code|BLUVMTFiles}}.
 
  
 
=== Models with other class arms/models blocking the view ===
 
=== Models with other class arms/models blocking the view ===
 
* If you wish to remove a model from the viewer (for example the Sniper's arms holding onto the view model Sniper Rifle), click on the Model tab in HLMV and find out which VMTs are being used for the model textures.
 
* If you wish to remove a model from the viewer (for example the Sniper's arms holding onto the view model Sniper Rifle), click on the Model tab in HLMV and find out which VMTs are being used for the model textures.
* Extract the VMTs using GCFScape to the same path in your {{code|/custom/folder}} and open them up in a text editor.
+
* Extract the VMTs using GCFScape to the same path in your <code>/custom/folder</code> and open them up in a text editor.
* Inside the {{code|"VertexLitGeneric"}} curly brackets add the line {{code|"$no_draw" "1"}}. This will make this part of the model invisible in HLMV.
+
* Inside the <code>"VertexLitGeneric"</code> curly brackets add the line <code>"$no_draw" "1"</code>. This will make this part of the model invisible in HLMV.
  
 
=== Recompiling models ===
 
=== Recompiling models ===
 
* First, check [[TFW:3D Models/Weapons|here]] to see if a model has already been recompiled.
 
* First, check [[TFW:3D Models/Weapons|here]] to see if a model has already been recompiled.
* Download and install [http://steamcommunity.com/groups/CrowbarTool Crowbar], [http://nemesis.thewavelength.net/index.php?p=25 GCFScape], and the Source SDK (Steam -> Library -> Tools)
+
* Download and install [http://steamcommunity.com/groups/CrowbarTool Crowbar], [https://web.archive.org/web/20191202141812/http://nemesis.thewavelength.net/index.php?p=25 GCFScape], and the Source SDK (Steam -> Library -> Tools)
 
* Extract the model with GCFScape, decompile with Crowbar.
 
* Extract the model with GCFScape, decompile with Crowbar.
* For the most part, adding <code>$autocenter</code> to the .qc file should do the trick. If not, try using $origin X Y Z. For more complex concerns, see {{vdc|Category:QC Commands}}.
+
* For the most part, adding <code>$autocenter</code> to the .qc file should do the trick. If not, try using <code>$origin X Y Z</code>. For more complex concerns, see {{vdc|Category:QC Commands}}.
 
* Recompile the model with Crowbar. You should be good to go!
 
* Recompile the model with Crowbar. You should be good to go!
  
== Uploading your image for submission ==
+
== Uploading your image ==
* Post a link to the image on the [[Team Fortress Wiki talk:3D Models|Talk page]] under a section titled after the weapon's name, along with your parameters for the script (weapon key name, initial rotation, initial translation, offsets, etc).
+
* This should happen automatically. If it does not, the script will save your image (and the template) to temp.jpg and temp.txt.
* Keep a copy of the individual frame images somewhere safe in case they are needed in the near future.
 
  
 
== Tips and debugging ==
 
== Tips and debugging ==
* If your HLMV is opening too slowly, adjust the time in the {{code|mouse.sleep(time in seconds)}} entry that follows opening HLMV.
+
* You can set <code>vertical_rotations = 0</code> to generate the model with no tilting, or reduce the number of rotations with <code>number_of_images</code>.
* If something interrupts the image taking process, you can continue where you left off by setting the {{code|n}} argument in the automateDis method.
 
** You can also use this to check the images are coming out right by interrupting the script and checking the images. If the rotation looks okay, continue where you left off.
 
* You can also set the {{code|verticalRotations}} argument to {{code|True}} to just rotate the model with no tilt to see if it looks fine.
 
 
* You will find it '''much''' easier when recompiling models to find out if they're centered correctly by checking the 'Ground' checkbox in HLMV and refreshing the model every time you make a change and recompile.
 
* You will find it '''much''' easier when recompiling models to find out if they're centered correctly by checking the 'Ground' checkbox in HLMV and refreshing the model every time you make a change and recompile.
 +
* If the 3D image's starting position isn't centered, click the edit button on the 3D image file's page and change "startframe" to whichever frame number is the centered frame.
  
 
== Models repository ==
 
== Models repository ==
Line 107: Line 70:
 
== Weapons ==
 
== Weapons ==
 
=== Needed weapons ===
 
=== Needed weapons ===
 
+
* None
'''Scout Weapons:'''
 
* {{icon item|Current Event Scattergun|30px}} [[Current Event Scattergun]]
 
* {{icon item|Night Terror Scattergun|30px}} [[Night Terror Scattergun]]
 
 
 
'''Soldier Weapons:'''
 
* {{icon item|Shell Shocker Rocket Launcher|30px}} [[Shell Shocker Rocket Launcher]]
 
* {{icon item|Aqua Marine Rocket Launcher|30px}} [[Aqua Marine Rocket Launcher]]
 
* {{icon item|Sand Cannon Rocket Launcher|30px}} [[Sand Cannon Rocket Launcher]]
 
* {{icon item|Woodland Warrior Rocket Launcher|30px}} [[Woodland Warrior Rocket Launcher]]
 
 
 
'''Pyro Weapons:'''
 
* {{icon item|Flash Fryer Flame Thrower|30px}} [[Flash Fryer Flame Thrower]]
 
* {{icon item|Turbine Torcher Flame Thrower|30px}} [[Turbine Torcher Flame Thrower]]
 
* {{icon item|Forest Fire Flame Thrower|30px}} [[Forest Fire Flame Thrower]]
 
 
 
'''Demoman Weapons:'''
 
* {{icon item|Scottish Handshake|30px}} [[Scottish Handshake]]
 
 
 
'''Heavy Weapons:'''
 
* {{icon item|Minigun|30px}} [[Minigun|Minigun: Multiple Skins]]
 
* {{icon item|Natascha|30px}} [[Natascha]]
 
* {{icon item|Brick House Minigun|30px}} [[Brick House Minigun]]
 
* {{icon item|King of the Jungle Minigun|30px}} [[King of the Jungle Minigun]]
 
 
 
'''Demoman Weapons:'''
 
* {{icon item|Stickybomb Launcher|30px}} [[Stickybomb Launcher|Stickybomb Launcher: Multiple Skins]]
 
* {{icon item|Sticky Jumper|30px}} [[Sticky Jumper]]
 
* {{icon item|Scottish Resistance|30px}} [[Scottish Resistance]]
 
* {{icon item|Liquid Asset Stickybomb Launcher|30px}} [[Liquid Asset Stickybomb Launcher]]
 
* {{icon item|Pink Elephant Stickybomb Launcher|30px}} [[Pink Elephant Stickybomb Launcher]]
 
* {{icon item|Sudden Flurry Stickybomb Launcher|30px}} [[Sudden Flurry Stickybomb Launcher]]
 
* {{icon item|Carpet Bomber Stickybomb Launcher|30px}} [[Carpet Bomber Stickybomb Launcher]]
 
 
 
'''Medic Weapons:'''
 
* {{icon item|Spark of Life Medi Gun|30px}} [[Spark of Life Medi Gun]]
 
* {{icon item|Wrapped Reviver Medi Gun|30px}} [[Wrapped Reviver Medi Gun]]
 
* {{icon item|Masked Mender Medi Gun|30px}} [[Masked Mender Medi Gun]]
 
 
 
'''Sniper Weapons:'''
 
* {{icon item|Thunderbolt Sniper Rifle|30px}} [[Thunderbolt Sniper Rifle]]
 
* {{icon item|Purple Range Sniper Rifle|30px}} [[Purple Range Sniper Rifle]]
 
* {{icon item|Night Owl Sniper Rifle|30px}} [[Night Owl Sniper Rifle]]
 
* {{icon item|Low Profile SMG|30px}} [[Low Profile SMG]]
 
* {{icon item|Woodsy Widowmaker SMG|30px}} [[Woodsy Widowmaker SMG]]
 
 
 
'''Spy Weapons:'''
 
* {{icon item|Dead Reckoner Revolver|30px}} [[Dead Reckoner Revolver]]
 
* {{icon item|Psychedelic Slugger Revolver|30px}} [[Psychedelic Slugger Revolver]]
 
 
 
'''Multiple Class Weapons:'''
 
* {{icon item|Power Up Canteen}} [[Power Up Canteen|Teleport Canteen]]
 
* {{icon item|Lightning Rod Shotgun|30px}} [[Lightning Rod Shotgun]]
 
* {{icon item|Backwoods Boomstick Shotgun|30px}} [[Backwoods Boomstick Shotgun]]
 
* {{icon item|Black Dahlia Pistol|30px}} [[Black Dahlia Pistol]]
 
* {{icon item|Sandstone Special Pistol|30px}} [[Sandstone Special Pistol]]
 
* {{icon item|Red Rock Roscoe Pistol|30px}} [[Red Rock Roscoe Pistol]]
 
  
 
=== Finished weapons ===
 
=== Finished weapons ===
Line 224: Line 131:
 
* {{icon item|Disciplinary Action|30px}} [[Disciplinary Action]]
 
* {{icon item|Disciplinary Action|30px}} [[Disciplinary Action]]
 
* {{icon item|Disguise Kit|30px}} [[Disguise Kit]]
 
* {{icon item|Disguise Kit|30px}} [[Disguise Kit]]
 +
* {{icon item|Dragon's Fury|30px}} [[Dragon's Fury]]
 
* {{icon item|Electro Sapper|30px}} [[Electro Sapper|Electro Sapper: Multiple Skins]]
 
* {{icon item|Electro Sapper|30px}} [[Electro Sapper|Electro Sapper: Multiple Skins]]
 
* {{icon item|Enforcer|30px}} [[Enforcer]]
 
* {{icon item|Enforcer|30px}} [[Enforcer]]
Line 246: Line 154:
 
* {{icon item|Frontier Justice|30px}} [[Frontier Justice|Frontier Justice: Multiple Skins]]
 
* {{icon item|Frontier Justice|30px}} [[Frontier Justice|Frontier Justice: Multiple Skins]]
 
* {{icon item|Frying Pan|30px}} [[Frying Pan]]
 
* {{icon item|Frying Pan|30px}} [[Frying Pan]]
 +
* {{icon item|Gas Passer|30px}} [[Gas Passer]]
 
* {{icon item|Giger Counter|30px}} [[Giger Counter]]
 
* {{icon item|Giger Counter|30px}} [[Giger Counter]]
 
* {{icon item|Gloves of Running Urgently|30px}} [[Gloves of Running Urgently|Gloves of Running Urgently: Multiple Skins]]
 
* {{icon item|Gloves of Running Urgently|30px}} [[Gloves of Running Urgently|Gloves of Running Urgently: Multiple Skins]]
Line 260: Line 169:
 
* {{icon item|Homewrecker|30px}} [[Homewrecker]]
 
* {{icon item|Homewrecker|30px}} [[Homewrecker]]
 
* {{icon item|Horseless Headless Horsemann's Headtaker|30px}} [[Horseless Headless Horsemann's Headtaker]]
 
* {{icon item|Horseless Headless Horsemann's Headtaker|30px}} [[Horseless Headless Horsemann's Headtaker]]
 +
* {{icon item|Hot Hand|30px}} [[Hot Hand]]
 
* {{icon item|Huntsman|30px}} [[Huntsman|Huntsman: Multiple Skins]]
 
* {{icon item|Huntsman|30px}} [[Huntsman|Huntsman: Multiple Skins]]
 
* {{icon item|Huo-Long Heater|30px}} [[Huo-Long Heater]]
 
* {{icon item|Huo-Long Heater|30px}} [[Huo-Long Heater]]
Line 285: Line 195:
 
* {{icon item|Memory Maker|30px}} [[Memory Maker]]
 
* {{icon item|Memory Maker|30px}} [[Memory Maker]]
 
* {{icon item|Mutated Milk|30px}} [[Mutated Milk]]
 
* {{icon item|Mutated Milk|30px}} [[Mutated Milk]]
 +
* {{icon item|Natascha|30px}} [[Natascha]]
 
* {{icon item|Necro Smasher|30px}} [[Necro Smasher]]
 
* {{icon item|Necro Smasher|30px}} [[Necro Smasher]]
 
* {{icon item|Neon Annihilator|30px}} [[Neon Annihilator]]
 
* {{icon item|Neon Annihilator|30px}} [[Neon Annihilator]]
Line 300: Line 211:
 
* {{icon item|Powerjack|30px}} [[Powerjack]]
 
* {{icon item|Powerjack|30px}} [[Powerjack]]
 
* {{icon item|Pretty Boy's Pocket Pistol|30px}} [[Pretty Boy's Pocket Pistol]]
 
* {{icon item|Pretty Boy's Pocket Pistol|30px}} [[Pretty Boy's Pocket Pistol]]
 +
* {{icon item|Prinny Machete|30px}} [[Prinny Machete]]
 
* {{icon item|Quackenbirdt|30px}} [[Quackenbirdt]]
 
* {{icon item|Quackenbirdt|30px}} [[Quackenbirdt]]
 
* {{icon item|Quick-Fix|30px}} [[Quick-Fix]]
 
* {{icon item|Quick-Fix|30px}} [[Quick-Fix]]
Line 320: Line 232:
 
* {{icon item|Scotsman's Skullcutter|30px}} [[Scotsman's Skullcutter]]
 
* {{icon item|Scotsman's Skullcutter|30px}} [[Scotsman's Skullcutter]]
 
* {{icon item|Scottish Handshake|30px}} [[Scottish Handshake]]
 
* {{icon item|Scottish Handshake|30px}} [[Scottish Handshake]]
 +
* {{icon item|Scottish Resistance|30px}} [[Scottish Resistance]]
 +
* {{icon item|Second Banana|30px}} [[Second Banana]]
 
* {{icon item|Self-Aware Beauty Mark|30px}} [[Self-Aware Beauty Mark]]
 
* {{icon item|Self-Aware Beauty Mark|30px}} [[Self-Aware Beauty Mark]]
 
* {{icon item|Shahanshah|30px}} [[Shahanshah]]
 
* {{icon item|Shahanshah|30px}} [[Shahanshah]]
Line 340: Line 254:
 
* {{icon item|Sydney Sleeper|30px}} [[Sydney Sleeper]]
 
* {{icon item|Sydney Sleeper|30px}} [[Sydney Sleeper]]
 
* {{icon item|Syringe Gun|30px}} [[Syringe Gun]]
 
* {{icon item|Syringe Gun|30px}} [[Syringe Gun]]
 +
* {{icon item|Thermal Thruster|30px}} [[Thermal Thruster]]
 
* {{icon item|Third Degree|30px}} [[Third Degree]]
 
* {{icon item|Third Degree|30px}} [[Third Degree]]
 
* {{icon item|Three-Rune Blade|30px}} [[Three-Rune Blade]]
 
* {{icon item|Three-Rune Blade|30px}} [[Three-Rune Blade]]
Line 360: Line 275:
 
* {{icon item|Your Eternal Reward|30px}} [[Your Eternal Reward]]
 
* {{icon item|Your Eternal Reward|30px}} [[Your Eternal Reward]]
 
}}
 
}}
 +
 +
== Action Slot Items ==
 +
=== Needed Action slot items ===
 +
 +
'''All Class Action Slot Items:'''
 +
* None
 +
 +
=== Finished Action slot items ===
 +
* {{icon item|Battery Canteens|30px}} [[Battery Canteens]]
 +
* {{icon item|Duck Journal|30px}} [[Duck Journal]]
 +
* {{icon item|Fancy Spellbook|30px}} [[Fancy Spellbook]]
 +
* {{icon item|Fireproof Secret Diary|30px}} [[Fireproof Secret Diary]]
 +
* {{icon item|Grappling Hook|30px}} [[Grappling Hook]]
 +
* {{icon item|Kritz or Treat Canteen|30px}} [[Kritz or Treat Canteen]]
 +
* {{icon item|Power Up Canteen|30px}} [[Power Up Canteen]]

Latest revision as of 06:25, 31 October 2024

The 3D Models project's goal is to construct pseudo-3D images of the weapons in Team Fortress 2 that can be freely rotated.

Example

https://wiki.teamfortress.com/w/images/6/6a/Detonator_RED_3D.jpg?2018072610024612838,280,233,3,0,193,111,56,152,110,115,146,109,175,194,106,266,153,106,367,147,105,472,194,84,608,155,83,762,146,80,924,194,63,1098,157,60,1295,145,57,1503,194,44,1705,161,40,1932,145,35,2173,195,29,2392,165,24,2635,147,19,2895,195,20,3123,171,14,3377,151,7,3646,196,17,3872,177,11,4122,154,4,4386,198,22,4597,182,16,4829,159,9,5073,204,37,5255,188,31,5454,164,25,5663,210,61,5803,192,56,5955,168,51,6114,214,92,6203,195,89,6298,170,86,6396,215,114,6447,196,115,6497,172,115,6545,214,98,6633,195,95,6727,170,94,6825,210,78,6965,192,71,7116,168,68,7275,204,60,7457,188,49,7656,164,45,7865,198,46,8076,182,30,8308,159,25,8552,196,35,8778,177,17,9028,154,10,9292,195,31,9520,171,11,9774,151,2,10043,194,30,10263,165,12,10506,147,0,10766,194,33,10968,161,12,11195,145,2,11436,194,42,11610,157,21,11807,145,14,12015,194,58,12151,155,42,12306,146,35,12469,194,82,12560,153,72,12661,147,69https://wiki.teamfortress.com/w/images/3/36/Detonator_BLU_3D.jpg?2018072610042612842,280,232,3,0,193,111,56,153,110,114,146,110,173,194,106,264,154,106,365,146,105,470,194,84,607,155,82,761,146,80,923,194,62,1097,158,59,1294,145,56,1502,195,43,1704,162,39,1931,145,35,2172,195,28,2392,166,23,2635,148,18,2896,195,19,3125,171,14,3379,151,7,3649,196,17,3875,177,11,4125,154,4,4389,198,22,4600,182,16,4832,159,10,5076,203,37,5258,187,32,5457,164,25,5666,209,61,5806,191,57,5957,167,52,6116,213,92,6205,194,90,6299,170,87,6397,214,114,6448,195,114,6498,171,115,6546,213,98,6635,194,95,6729,170,93,6827,209,78,6967,191,70,7118,168,68,7277,203,60,7459,187,48,7658,164,44,7867,198,45,8078,182,30,8310,159,25,8554,196,35,8780,177,17,9030,154,10,9294,195,31,9523,171,11,9777,151,1,10047,195,30,10267,166,12,10510,148,0,10771,194,33,10973,162,12,11200,145,2,11441,194,42,11615,158,22,11812,145,14,12020,194,58,12157,155,42,12311,146,36,12473,194,82,12564,154,72,12665,146,69

Pictogram comment.png Note This is not for the faint of heart. It requires a bit of knowledge on how both VMTs and HLMV work, and a lot of time and patience since a lot of models will not be centered correctly by default, thus requiring plenty of tweaking to get them ready for the process.

Requirements

Initial setup

Installation

Please follow the latest instructions at the 3D-Models-automaton repo.

Workflow

Taking images

  • Open up the weapon in HLMV and ensure it rotates properly. There are three possible outcomes here:
    • The model will rotate around the bottom corner of the model. If so, you will need to make use of rotation_offset.
      • First, reset the model's position with Options → Center View.
      • Then, from cmd, navigate to the folder containing automate.py and run mem trans, noting the second value (the Y translation).
      • Back in HLMV, rotate the model so that it is facing right. Hold down ⇧ Shift and move the model sideways so that it is centered in the circle that appears.
      • Go back to cmd, and run mem trans again, once again noting the second value.
      • The difference between the current value and the initial value is the rotation_offset value to set in automate.py.
    • The model will rotate around the wrong plane or the model will not rotate around the vertical or horizontal center. If so, the model will need to be recompiled.
    • The model will rotate around the vertical and horizontal center of the model. If so, you are good to go.
  • Center the model using Options → Center View.
  • If the model does not face you directly when centered, it will need to be recompiled with a new rotation.
  • Zoom the model out so that it is as large as possible, but will not clip outside the viewer window when rotated or tilted.
  • If the light source produces a glare that interferes with the model, hold Ctrl and drag the light source around with the mouse until it is in a better position.
  • Run the script, from the command line. Navigate to the folder containing the scripts and type python automate.py.
  • After the image finishes rotating, switch back to the command line and follow the prompts to upload the file.

Team-colored models

  • This is now very simple, simply change this in HLMV (Model → Skin #), then re-run the script.

Models with other class arms/models blocking the view

  • If you wish to remove a model from the viewer (for example the Sniper's arms holding onto the view model Sniper Rifle), click on the Model tab in HLMV and find out which VMTs are being used for the model textures.
  • Extract the VMTs using GCFScape to the same path in your /custom/folder and open them up in a text editor.
  • Inside the "VertexLitGeneric" curly brackets add the line "$no_draw" "1". This will make this part of the model invisible in HLMV.

Recompiling models

  • First, check here to see if a model has already been recompiled.
  • Download and install Crowbar, GCFScape, and the Source SDK (Steam -> Library -> Tools)
  • Extract the model with GCFScape, decompile with Crowbar.
  • For the most part, adding $autocenter to the .qc file should do the trick. If not, try using $origin X Y Z. For more complex concerns, see Category:QC Commands on the Valve Developer Community.
  • Recompile the model with Crowbar. You should be good to go!

Uploading your image

  • This should happen automatically. If it does not, the script will save your image (and the template) to temp.jpg and temp.txt.

Tips and debugging

  • You can set vertical_rotations = 0 to generate the model with no tilting, or reduce the number of rotations with number_of_images.
  • You will find it much easier when recompiling models to find out if they're centered correctly by checking the 'Ground' checkbox in HLMV and refreshing the model every time you make a change and recompile.
  • If the 3D image's starting position isn't centered, click the edit button on the 3D image file's page and change "startframe" to whichever frame number is the centered frame.

Models repository

Weapons

Needed weapons

  • None

Finished weapons

Action Slot Items

Needed Action slot items

All Class Action Slot Items:

  • None

Finished Action slot items