Difference between revisions of "Team Fortress Wiki:3D Models"
| m (Added the Freedom Staff to Finished weapons.) |  (→Needed weapons) | ||
| Line 434: | Line 434: | ||
| * {{icon item|Equalizer|30px}} [[Equalizer]] | * {{icon item|Equalizer|30px}} [[Equalizer]] | ||
| * {{icon item|Festive Wrench|30px}} [[Festive Wrench]] | * {{icon item|Festive Wrench|30px}} [[Festive Wrench]] | ||
| − | * {{icon item|Lollichop|30px}} [[Lollichop]] | + | * {{icon item|Lollichop|30px}} [[Lollichop]] {{c|info}} - Reserved by [[User:R_1|r 1]] | 
| * {{icon item|Botkiller Scattergun|30px}} [[Botkiller Scattergun]] | * {{icon item|Botkiller Scattergun|30px}} [[Botkiller Scattergun]] | ||
| * {{icon item|Gold Botkiller Scattergun|30px}} [[Gold Botkiller Scattergun]] | * {{icon item|Gold Botkiller Scattergun|30px}} [[Gold Botkiller Scattergun]] | ||
Revision as of 06:09, 11 October 2012
The 3D Models project's goal is to construct pseudo 3D images of the weapons in Team Fortress 2 that can be freely rotated.
Contents
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
 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.
 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
- Python 2.6 (32-bit version) (python-2.6.6.msi)
- SendKeys (SendKeys-0.3.win32-py2.6.exe)
- Python Imaging Library (PIL) (PIL-1.1.7.win32-py2.6.exe)
- pywin32 (pywin32-216.win32-py2.6.exe)
- NumPy (numpy-1.6.1-win32-superpack-python2.6.exe)
- cython (Cython-0.15.1.win32-py2.6.exe)
- Modified SendKeys.py
- (Optional) Psyco for speed improvements (available for 32-bit Python only)
OR
Also:
- Visual C++ 2008 Express Edition with SP1 (Must be 2008, more recent versions will not work)
- wikitools
- The automaton script
- The Source SDK
- GCFScape
- For models that need to be recompiled: MDL Decompiler and StudioCompiler.
Initial setup
Installation
- If manually installing Python:
- Install Python 2.6 and the required libraries (SendKeys, PIL, pywin32, NumPy and cython) and install Visual Studio Express 2008 C++ Express Edition.
- Extract the wikitools zipped file into the same directory as the script.
- Copy the MDL Decompiler .exe to \Steam\steamapps\<username>\sourcesdk\bin\ep1\bin.
- Navigate to \Python26\Lib\site-packages and replace SendKeys.py with the modified version linked above.
 
- Otherwise extract the zipped Python folder somewhere.
- Download and save the automaton scripts to an easily accessible folder.
- Copy fireLayeredSlowTiled512.vtfto\steamapps\<username>\sourcesdk\bin\orangebox\tf\materials\effects\tiledfire.
- Copy background.vtfto\steamapps\<username>\sourcesdk\bin\orangebox\tf\materials\hlmv.
- Set up HLMV to produce the highest quality images possible by following the guide found here.
Setting up automate.py
File:3D Tutorial HLMV Coordinates.png  
HLMV screen where 1 is the location of 
fileButtonCoordindates, 2 is the location of optionsButtonCoodinates, and 3 is the boundary for 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.
- SDKLauncherStartingPointis a tuple of the x,y coordindates where the SDK Launcher will roughly be so the script can click on it. This can be a very rough estimate.
- monitorResolutionis simply a list of your screen resolution.
- imgCropBoundariesis the boundary of the window the model in HLMV is contained within. The format is;- [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]
- You should leave a few pixels gap from the window edge.
 
 
- fileButtonCoordindatesis a tuple of the center x,y coordinates for the File menu button in HLMV.
- Close any programs that may interrupt or interfere with the process.
- You are now set to take the images.
Workflow
Taking images
- After opening the SDK Launcher, but before opening HLMV, run hlmv-tf2.bat– found within the zipped file – found here. This is to be done every time you open the SDK.
- Open up a weapon model in HLMV and 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 model has a fire overlay, see the section on dealing with team-colored models on how to remove it.
- If the light source produces a glare that interferes with the model, hold Ctrl and drag the light source around with the mouse untill it is in a better position.
- Open regedit, navigate to \HKEY_CURRENT_USER\Software\Valve\hlmv, and locate the registry key entry for the model. This will be in the form ofmodels.weapons.c_models.c_wrench.c_wrench.mdl.
- Copy and paste this key name into automate.py in the model = HLMVModelRegistryKey() entry.
- Copy the Transkey entry for the model into automateDis as theintialTranslationargument. (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 rotationOffset.- Rotate the model so that it is facing left. Hold down ⇧ Shift and move the model sideways so that it is centered in the circle that appears.
- Press 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 rotationOffsetvalue.
 
- 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. See the section on recompiling models.
- The model will rotate around the vertical and horizontal center of the model. If so, you are good to go.
 
- The model will rotate around the bottom corner of the model. If so, you will need to make use of 
- Set the item name in the script for 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.
- The script is started as so. From the commandline, navigate to the folder containing the scripts and type python automate.py.
- You will be asked to enter the folder name for the generated images.
- You then have 3 seconds (by default) to do the following. Click on the SDK Launcher, highlight the 'Model Viewer' entry, and then click on HLMV to bring it back into focus.
- 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 Caps Lock.
 
Painted hats
- Coming soon
Team-colored models
- Extract the vmts for the model from the materials.gcf into the appropriate folder.
- In the automate.py script set teamColourstoTrueand set the paths to the vmts forREDVMTFileandBLUVMTFile
Models with other class arms/models blocking the view
- If you wish to remove a model from the viewer (for example the Spy's arms holding onto the viewmodel Electro Sapper), 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 'team fortress 2 folder' and open them up in a text editor.
- Inside the "VertexLitGeneric"curly brackets add the line"$no_draw" "1". This will make the model invisible in HLMV.
Recompiling models
- Open the model in HLMV.
- Launch GCFScape and load 'team fortress 2 materials.gcf'.
- Navigate to tf\models\weaponsand extract the relevant weapon folder to\Steam\steamapps\<username>\team fortress 2\tf\models\weapons.
- Launch MDL Decompiler, tick "do not fix rotations on animations", set your output directory to the same folder where the model was extracted, and extract.
- Unfortunately, you are not done. The animation sequences you have just decompiled are all horribly borked. Launch StudioCompiler, go to the Model Decompile tab, and decompile the same model (this time leaving "do not fix rotations" unticked). The decompiler will throw you an error. That is fine. Click okay and it will finish extracting. Make sure you output to the SAME directory as the previous step so that the files will be overwritten.
- Open up the outputted "mdldecompiler.qc" and change the $model line's value for the .dmx.smd file to not include a directory. i.e. change "parts/dmx/c_wrench.dmx.smd" to "c_wrench.dmx.smd".
- Open up idle.smd in a text editor. You will find an entry/entries that start with time 0/1/etc. The 2nd/3rd/4th numbers in the entry correspond to back/forth, side to side, and up/down translations, respectively. The 5th/6th/7th numbers in the entry correspond to x, y, and z rotations, respectively. Correct these values for all lines (or delete the all the time lines except for the first) and save.
- Go back to StudioCompiler, go to the Model Compile tab, go to the "Compile w/Existing QC" section, select your "mdldecompiler.qc" which you just edited, and press compile. Note: If you get a compiler error about write access, it is probably because the directory that the compiler wants to output to as specified in the .qc doesn't exist. Create it.
- Note: If StudioCompiler is crashing or otherwise fails to compile, you can compile manually (which is faster too). Open the command line to the directory with your "mdldecompiler.qc" and enter:
"[STEAMAPPS DIRECTORY]\sourcesdk\bin\orangebox\bin\studiomdl" -game "[STEAMAPPS DIRECTORY]\team fortress 2\tf" mdldecompiler.qc
- Press F5 in HLMV to refresh the model state. If the model still does not rotate in the correct plane/center of the model, change the values again and recompile. This may require a lot of trial and error.
- After successfully recentering the model, copy the recompiled .mdl, .vtx, .phy, and .vvd files into a zipped folder and upload to a file sharing site (preferably MediaFire) to post on the project page.
Uploading your image for submission
- Post a link to the image on the 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).
- Keep a copy of the individual frame images somewhere safe in case they are needed in the near future.
Tips and debugging
- If your HLMV is opening too slowly, adjust the time in the mouse.sleep(time in seconds)entry that follows opening HLMV.
- Stick the SDK Launcher near the top left of your screen to speed up the step as the script will start looking for the button there by default (this can be changed).
- If something interrupts the image taking process, you can continue where you left off by setting the nargument 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 disableXRotation argument to Trueto 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.
Models repository
Weapons
Needed weapons
 Note: Reserve the weapon you are working on by placing the line '{{c|info}} - Reserved by [[User:<username>|<username>]]' on the relevant weapon line. If you have any problems with a model, please post on the Talk page under a section titled after the weapon's name.
 Note: Reserve the weapon you are working on by placing the line '{{c|info}} - Reserved by [[User:<username>|<username>]]' on the relevant weapon line. If you have any problems with a model, please post on the Talk page under a section titled after the weapon's name.
 Equalizer Equalizer
 Festive Wrench Festive Wrench
 Lollichop Lollichop Info - Reserved by r 1 Info - Reserved by r 1
- Botkiller Scattergun Botkiller Scattergun
 Gold Botkiller Scattergun Gold Botkiller Scattergun
- Botkiller Rocket Launcher Botkiller Rocket Launcher
 Gold Botkiller Rocket Launcher Gold Botkiller Rocket Launcher
- Botkiller Flame thrower Botkiller Flame thrower
- Gold Botkiller Flame thrower Gold Botkiller Flame thrower
- Botkiller Stickybomb Launcher Botkiller Stickybomb Launcher
 Gold Botkiller Stickybomb Launcher Gold Botkiller Stickybomb Launcher
- Botkiller Minigun Botkiller Minigun
 Gold Botkiller Minigun Gold Botkiller Minigun
 Botkiller Wrench Botkiller Wrench
 Gold Botkiller Wrench Gold Botkiller Wrench
 Botkiller Medi Gun Botkiller Medi Gun
 Gold Botkiller Medi Gun Gold Botkiller Medi Gun
- Botkiller Sniper Rifle Botkiller Sniper Rifle
 Gold Botkiller Sniper Rifle Gold Botkiller Sniper Rifle
 Botkiller Knife Botkiller Knife
 Gold Botkiller Knife Gold Botkiller Knife
Finished weapons
 Ali Baba's Wee Booties Ali Baba's Wee Booties
 Ambassador Ambassador
 Amputator Amputator
 Apoco-Fists Apoco-Fists
 Atomizer Atomizer
 AWPer Hand AWPer Hand
 Axtinguisher Axtinguisher
 Baby Face's Blaster Baby Face's Blaster
 Backburner Backburner
 Back Scratcher Back Scratcher
 Bat Bat
 Battalion's Backup Battalion's Backup
 Bazaar Bargain Bazaar Bargain
 Beggar's Bazooka Beggar's Bazooka
 Big Earner Big Earner
 Big Kill Big Kill
 Black Box Black Box
 Black Rose Black Rose
 Blutsauger Blutsauger
 Bonesaw Bonesaw
 Bonk! Atomic Punch Bonk! Atomic Punch
 Bootlegger Bootlegger
 Boston Basher Boston Basher
 Bottle Bottle
 Brass Beast Brass Beast
 Buffalo Steak Sandvich Buffalo Steak Sandvich
 Buff Banner Buff Banner
 Bushwacka Bushwacka
 Candy Cane Candy Cane
 Chargin' Targe Chargin' Targe
 Claidheamh Mòr Claidheamh Mòr
 Cleaner's Carbine Cleaner's Carbine
 Cloak and Dagger Cloak and Dagger
 Concheror Concheror
 Conniver's Kunai Conniver's Kunai
 Conscientious Objector Conscientious Objector
 Cow Mangler 5000 Cow Mangler 5000
 Cozy Camper Cozy Camper
 Crit-a-Cola Crit-a-Cola
 Crusader's Crossbow Crusader's Crossbow
 Dalokohs Bar Dalokohs Bar
 Darwin's Danger Shield Darwin's Danger Shield
 Dead Ringer Dead Ringer
 Degreaser Degreaser
 Detonator Detonator
 Diamondback Diamondback
 Direct Hit Direct Hit
 Disciplinary Action Disciplinary Action
 Disguise Kit Disguise Kit
 Electro Sapper Electro Sapper
 Enforcer Enforcer
 Enthusiast's Timepiece Enthusiast's Timepiece
 Escape Plan Escape Plan
 Eureka Effect Eureka Effect
 Eviction Notice Eviction Notice
 Eyelander Eyelander
 Family Business Family Business
 Fan O'War Fan O'War
 Festive Bat Festive Bat
 Festive Flamethrower Festive Flamethrower
 Festive Minigun Festive Minigun
 Festive Rocket Launcher Festive Rocket Launcher
 Festive Scattergun Festive Scattergun
 Festive Sniper Rifle Festive Sniper Rifle
 Festive Stickybomb Launcher Festive Stickybomb Launcher
 Fire Axe Fire Axe
 Fishcake Fishcake
 Fists Fists
 Fists of Steel Fists of Steel
 Flamethrower Flamethrower
 Flare Gun Flare Gun
 Force-A-Nature Force-A-Nature
 Freedom Staff Freedom Staff
 Frontier Justice Frontier Justice
 Frying Pan Frying Pan
 Gloves of Running Urgently Gloves of Running Urgently
 Golden Wrench Golden Wrench
 Grenade Launcher Grenade Launcher
 Gunboats Gunboats
 Gunslinger Gunslinger
 Half-Zatoichi Half-Zatoichi
 Hitman's Heatmaker Hitman's Heatmaker
 Holiday Punch Holiday Punch
 Holy Mackerel Holy Mackerel
 Homewrecker Homewrecker
 Horseless Headless Horsemann's Headtaker Horseless Headless Horsemann's Headtaker
 Huntsman Huntsman
 Huo-Long Heater Huo-Long Heater
 Invisibility Watch Invisibility Watch
 Iron Curtain Iron Curtain
 Jag Jag
 Jarate Jarate
 Killing Gloves of Boxing Killing Gloves of Boxing
 Knife Knife
 Kritzkrieg Kritzkrieg
 Kukri Kukri
 L'Etranger L'Etranger
 Liberty Launcher Liberty Launcher
 Loch-n-Load Loch-n-Load
 Lugermorph Lugermorph
 Machina Machina
 Mad Milk Mad Milk
 Manmelter Manmelter
 Mantreads Mantreads
 Market Gardener Market Gardener
 Maul Maul
 Medi Gun Medi Gun
 Minigun Minigun
 Natascha Natascha
 Nessie's Nine Iron Nessie's Nine Iron
 Original Original
 Overdose Overdose
 Pain Train Pain Train
 PDA Build/Demolish Tool PDA Build/Demolish Tool
 Persian Persuader Persian Persuader
 Phlogistinator Phlogistinator
 Pistol Pistol
 Pomson 6000 Pomson 6000
 Postal Pummeler Postal Pummeler
 Powerjack Powerjack
 Pretty Boy's Pocket Pistol Pretty Boy's Pocket Pistol
 Quick-Fix Quick-Fix
 Rainblower Rainblower
 Razorback Razorback
 Red-Tape Recorder Red-Tape Recorder
 Reserve Shooter Reserve Shooter
 Revolver Revolver
 Righteous Bison Righteous Bison
 Rocket Jumper Rocket Jumper
 Rocket Launcher Rocket Launcher
 Sandman Sandman
 Sandvich Sandvich
 Saxxy Saxxy
 Scattergun Scattergun
 Scorch Shot Scorch Shot
 Scotsman's Skullcutter Scotsman's Skullcutter
 Scottish Handshake Scottish Handshake
 Scottish Resistance Scottish Resistance
 Shahanshah Shahanshah
 Sharp Dresser Sharp Dresser
 Sharpened Volcano Fragment Sharpened Volcano Fragment
 Short Circuit Short Circuit
 Shortstop Shortstop
 Shotgun Shotgun
 Shovel Shovel
 Sniper Rifle Sniper Rifle
 Soda Popper Soda Popper
 Solemn Vow Solemn Vow
 Southern Hospitality Southern Hospitality
 Splendid Screen Splendid Screen
 Spy-cicle Spy-cicle
 Stickybomb Launcher Stickybomb Launcher
 Sticky Jumper Sticky Jumper
 Submachine Gun Submachine Gun
 Sun-on-a-Stick Sun-on-a-Stick
 Sydney Sleeper Sydney Sleeper
 Syringe Gun Syringe Gun
 Third Degree Third Degree
 Three-Rune Blade Three-Rune Blade
 Tomislav Tomislav
 Tribalman's Shiv Tribalman's Shiv
 Übersaw Übersaw
 Ullapool Caber Ullapool Caber
 Unarmed Combat Unarmed Combat
 Vita-Saw Vita-Saw
 Wanga Prick Wanga Prick
 Warrior's Spirit Warrior's Spirit
 Widowmaker Widowmaker
 Winger Winger
 Wrangler Wrangler
 Wrap Assassin Wrap Assassin
 Wrench Wrench
 Your Eternal Reward Your Eternal Reward
