Jump to content


Server Admin
  • Content Count

  • Joined

  • Last visited

  • Days Won


Moltard last won the day on November 3 2018

Moltard had the most liked content!

Community Reputation

109 Bronze 2


Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. New update: Added ".obj to .smd" Added "Delete Unused materials from .obj" Added "merge obj files"
  2. Update: January 2020, the tool was updated with a remade GUI and new options
  3. https://www.dropbox.com/s/vvm3xfufkx87e1d/bosshpbar.zip?dl=0 the link in youtube is still available I never gave any link to the boss vmf
  4. Updated the tool to be only programmed in C# Also now it calculates the 'normals' of triangles in a model when you Apply all materials or Modify the obj. Also updated pictures and text in the post.
  5. Hello everyone, I made this tool: It's based on Slayerdragon's online tool http://slayerdragoncss.weebly.com/origin-finder.html The goal is to search for entities, get their origin and make outputs. To explain better, when we add, for example, torches particles in a map, we don't want to have them all in hammer because that would add too many entities and get close to the limit. So we use a point_template and a single particle By adding dummy entities (info_target for example), in the map where each torch will be located, and giving them all the same name, we can then use the tool to find these dummy entities and generate the outputs to spawn the point_template on each origin. We then open the vmf in Notepad++, we paste them in the Connection part of the entity parameters and we save (if Connection doesn't exist, add atleast 1 dummy output in Hammer) . And then, we simply FireUser1 on the point_template when needed. Doing that is really important, because when a new round start, every single entity of your map exist (for like 0.01 second). So imagine you have 100 info_particle_system for your torch, that can easily lead to the server reaching the edict limit and crashing. While, having only 1 info_particle_system, you are pretty safe. My tool work better than Slayerdragon's as it is not case sensitive, so if you search for Level_Counter, you can do LEVEL_counter and it will find it. The wildcard * is also supported when used with targetname. And I added an option for CS:GO, which give you outputs with that weird ESC character. (In this picture, they are invisible, but once copy pasted into Notepad++, you can see them) Download Link: https://www.dropbox.com/s/kcn3ltqlr53ymb5/OriginFinder.rar?dl=0
  6. So, I dont remember much of what I posted in this guide, but it was mostly a link to my youtube video, so enjoy 🤠
  7. Hello everyone, I made this tool It allows you to Mass Create VMT files easily. You simply need to browse to a folder with .vtf files, and you can generate a .vmt for each of these. Boolean parameters can be added to the tool by editing the .json files. It’s a clean remake of the tool called ‘Pretador’s VMT Generator’ which had few issues starting and had a lot of useless parameters. Download Link: https://www.dropbox.com/s/clsx097cuasdw74/MassVMTGenerator.rar?dl=0 Pretador’s Tool: https://gamebanana.com/tools/5568
  8. Level System There is a new easy way, (understandable by probably any new mapper) of making levels/stages for Zombie Escape maps. Thanks to .george/KORK for the system idea Thanks to Enviolinador and Syoudous aswell Basically, you will make the counter that save the levels permanent, so it keeps its value when a new round start. So you no longer need to stock that value in a func_brush/worldspawn How to do it: First you need a logic_case. Give it a name (Level_Case for the guide) Set Case01 to 1 Set Case02 to 2 Set Case03 to 3 etc.. Add outputs corresponding of your levels In the example I will just Break a wall depending of the level, to open a different path You will add all outputs for the levels on the logic_case OnCase01 > Server > Command > say **LEVEL1** > Delay=0 OnCase01 > Door1 > Break > > Delay=0 OnCase02 > Server > Command > say **LEVEL2** > Delay=0 OnCase02 > Door2 > Break > > Delay=0 OnCase03 > Server > Command > say **LEVEL3** > Delay=0 OnCase03 > Door3 > Break > > Delay=0 Now you need a math_counter. Give it a name (Level_Counter for the guide) Set Initial Value to 1 Set Minimum Legal Value to 1 Set Maximum Legal Value to the numbers of level you want in your map (3 for the guide) Add an output that target the logic_case: OnGetValue > Level_Case > InValue > > Delay=0 > Don't check Only Once This output will take the counter value, and check if a CaseXX value match it If the counter value is 2, the logic_case will trigger all outputs OnCase02 because "Case02" = "2" Now add a point_template. Give it a name (Level_Counter_Template for the guide) Set Template01 to Level_Counter Make sure only the flag Preserve Entity Name is checked Now add an info_target. info_target is a permanent entity, which mean if you kill it, it is gone forever, unless you reload the map. It also means all his outputs with Only Once can be triggered only once during the map Give it a name (Level_InitCounter for the guide) Add these outputs: OnUser1 > Level_Counter_Template > ForceSpawn > > Delay=0 > Check Only Once OnUser1 > Level_Counter > AddOutput > classname info_target > Delay=0.03 > Check Only Once OnUser1 > !self > Kill > > Delay=0.06 > Check Only Once The first output will spawn the point_template, to spawn the Level_Counter The second output will change the classname of the Level_Counter to make it permanent (it will keep its value over the rounds) The third output is simply to remove the info_target completly from the map once the Level_Counter is spawned Now you need to initialize everything. Add a logic_auto or a logic_relay in your map. Add these outputs (OnSpawn is for the logic_relay / OnMapSpawn is for the logic_auto): OnSpawn > Level_InitCounter > FireUser1 > > Delay=0 > Check Only Once OnSpawn > Level_Counter > GetValue > > Delay=0.02 > Check Only Once What happen is this: The first round start, it FireUser1 on the info_target, which spawn the Level_Counter_Template, and then make the Level_Counter permanent It then GetValue on Level_Counter to trigger the level corresponding to the counter value (Level1 since it's the first round) When a new round start, the Level_Counter still exist despite the point_template It will GetValue to trigger the level How to change the level: Since the Level_Counter is now permanent, it will never get reset when the round restart. So at the end of your level, when CT wins, just do: OnWhatever > Level_Counter > SetValue > X > Delay=What you want Replace X with the value you want If it's the end of Level1, you will do SetValue > 2 If it's the end of Level2, you will do SetValue > 3 etc... Alternative without point_template: Setup the Level_Counter and Level_Case like above. Add an info_target. Give it a name (Level_InitCounter for the guide) Add these outputs: OnUser1 > Level_Counter > AddOutput > classname info_target > Delay=0.00 > Check Only Once OnUser1 > Level_Counter > AddOutput > targetname Level_Counter_Global > Delay=0.02 > Check Only Once OnUser1 > !self > Kill > > Delay=0.04 > Check Only Once The first output will change the classname of the Level_Counter to make it permanent (it will keep its value over the rounds) The second output will change the targetname of the Level_Counter to make it different from the one that will respawn every round Now you need to initialize everything. Add a logic_auto or a logic_relay in your map. Add these outputs: OnSpawn > Level_InitCounter > FireUser1 > > Delay=0 > Check Only Once OnSpawn > Level_Counter_Global > GetValue > > Delay=0.04 > Check Only Once OnSpawn > Level_Counter > Kill > > Delay=0.10 > Check Only Once The second output will call an entity that doesn't exist in Hammer, but will exist in game, so it show as red What happen is this: The first round start, it FireUser1 on the info_target, which make the Level_Counter permanent, and rename it to Level_Counter_Global It then GetValue on Level_Counter_Global to trigger the level corresponding to the counter value (Level1 since it's the first round) When a new round start, the Level_Counter_Global still exist, and the normal Level_Counter spawn The logic_auto/relay will kill Level_Counter since it no longer needs to exist How to change the level: To change the level with this system, you won't call Level_Counter like earlier, but Level_Counter_Global. OnWhatever > Level_Counter_Global > SetValue > X > Delay=What you want Since Level_Counter_Global doesn't exist in Hammer, the outputs will show as red, but it will work ingame. Download Link for .vmf: CS:S .vmf: point_template system: https://www.dropbox.com/s/v381tpavvi4ikbo/dev_level_css.vmf?dl=0 No point_template system: https://www.dropbox.com/s/21d6ii39apbkzsx/dev_level_cssAlt.vmf?dl=0 CS:GO .vmf: point_template system: https://www.dropbox.com/s/6nh6lc7vlvugda0/dev_level_csgo.vmf?dl=0 No point_template system: https://www.dropbox.com/s/9sqiwcfcsbuw6sq/dev_level_csgoAlt.vmf?dl=0
  9. Ripping N64 models to Source - V2 This guide is an updated version of the guide I made 2 years ago. Since then, I learned more tricks on how to rip the models. This part of the guide will explain the steps to rip models from Nintendo 64 games. I will do another guide to explain how to build an exact replica of a N64 area. Here is a google sheet where I listed games that can be ripped or not: https://docs.google.com/spreadsheets/d/1ijRktBuMKTKaxeZiHErsZLJe59a9MEr1hOtKd19SGTo/edit?usp=sharing Some games can't be ripped, either the game doesn't start with the plugin enabled or the outputed rip is unusable. If you are interested in Rayman2 model ripping, it's a mess with N64, but way better on PC. All areas were already ripped there: https://raymanpc.com/forum/viewtopic.php?f=89&t=25072 I also uploaded the files on my google drive in case the website is down: PlayerModels https://drive.google.com/open?id=1O9TOZQT-v_IQ5DKsS-3l_1WXtxrQXJNG Areas: https://drive.google.com/open?id=1W_MtpOlXzO48OPsM80_nzySz5PF8PksH Once you are done with this guide, read the next one, which explain how you can build correctly a nintendo64 map. Update I was making a tool to help in n64 mapping and here it is now: Every informations about it in that post. Note that some of the software used in this guide are no longer needed thanks to the tool: Blender 2.63 Free Mouse Auto Clicker And some steps will be way faster now: Converting the .wrl to .obj Deleting all materials from a model Texturing completly a model Update 2 I made this tool which replace Pretador's VMT Generator. ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ Software needed Project64 2.2: An N64 emulator. It was provided by FrozenState and has all the needed plugins installed Project64 2.1: Alternative link. This the version I use and it has never crashed. Blender 2.63: This version can convert wrl to obj [No Longer Needed. My tool does it better] Milkshape 1.8.4: Get the "Full 30 days trial version". Dont take 1.8.5 Milkshape Alternate link: On my dropbox (in case the website is down at some point) Crowbar: A compiler/decompiler of models (.smd/.mdl) If you know how to use Blender, go ahead and use it instead of Milkshape, you will work faster with it, although this guide will only explain how to do some stuff with Milkshape and not with Blender https://www.blender.org/ Software you may need Gimp: Or Paint3D, or Photoshop if you have it/can use it. It will be needed for transparency parts VTFEdit: The usual .vtf creator VIDE: It has a Mass VTF Creator My Mass VMT Generator: Mass VMT Creator Free Mouse Auto Clicker: Or another auto clicker software you know [No Longer Needed. My tool does it better] ___________________________________________________________________________________________________ Step0: Installing softwares Install Milkshape 1.8.4. Make sure to get the 30 days trial version (not the free version), so you can register it with the following key: Name = Model Registration Code = oZMl2-J5BdK2-3Ed21dd Open Milkshape Click on Help -> About... Then Register Enter the Name and the Registration Code Click OK A box will appear, and will tell you thanks for purchasing Milkshape. But you will notice on the top of Milkshape window that it's still not registered. And it won't be if you close Milkshape right away. What you need to do is open a .ms3d file in Milkshape. You will find some in Milkshape root folder. For example: valve_skeleton.ms3d Now you got full Milkshape, with no limitation. If for some reason, the key I provided above doesn't work, download this keygen: Open the .rar, and inside go to f4ms01.zip -> f4cg.r00.rar. The tool is in that .rar Write a name and get the Registration Code ________________________________________ Install Project64, you can put it into any folder. All the plugins used for ripping models are installed. Nemu64 is the main plugin you will use. It will rip the models and dump textures of the area Rice Video is a plugin that can rip all the textures that you render in the game TR64 OpenGL is another plugin that can rip the models, it can be used if you have issue getting some areas with Nemu64. Although only few games can launch with it. And it might be able to preserve the vertex lighting of the original models, but that is out of the scope of this guide. To select the plugin to use, go to Options > Settings (Ctrl+T). Click on Plugins in the Tree, then select the Video (graphics) plugin you want. You can then select the settings of the Graphic Plugin with Options > Configure Graphic Plugin. Don't change anything yet for Nemu64. Go to C:\ . In there, create a folder called VRML. It is where the rips of games will be dumped by the plugin (Textures + Model). If you encounter crashes of games with Project64 2.2, install an older version (2.1), and copy the plugins to its folder: LemD3D8.dll in Plugin/GFX tr64_ogl.dll and .ini in Plugin/GFX RiceVideo files (cfg,ini,dll) in Plugin/GFX or just directly in Plugin (it doesn't matter as you can load it from any folder) I had that problem when I was ripping the big room in Shadow temple. The emulator would directly crash when the room was loaded. Switching to my normal Project64 2.1 (that I simply used to play N64 games) fixed the problem. It might be a setting in FrozenState's Project64 but I didn't find the problem. ________________________________________ If you download my tool, this information below is no longer relevant, as you don't use Blender to convert .wrl file Make sure you installed Blender 2.63, it is needed to import .wrl files obtained with Nemu64 and export them to .obj The newest versions of Blender can import .wrl too, but the problem is that the names of 'groups' no longer match their associated texture. Which make it impossible to know which texture to apply on which face. And the latest version of Blender might not even be able to load wrl ________________________________________ As for Crowbar, make sure to set it up for the game you want (CS:S, CS:GO,...). You can find guides on the Steam group of the software. ________________________________________ If you download my tool, this information below is no longer relevant For the auto-clicker, get the one I linked or any other you know: ________________________________________ As for the N64 ROMS, I won't provide any. Emuparadise no longer host any ROMS. FreeRoms has probably all the ROMS you are looking for. They can be installed anywhere you want on your computer, you simply need to select the folder: ___________________________________________________________________________________________________ Step1: Dump the game Launch Project64, select Nemu64 as the Graphic Plugin like shown above and start a ROM. Go to the area you want to rip and pause the game (F2). Now go in Configure Graphic Plugin. You will see this window: Check Export VRML and press OK. Now unpause and pause the game quickly (press F2 two times). Go back in Configure Graphic Plugin and uncheck Export VRML. Don't forget it, otherwise when you will unpause the emulator, the game will lag as it will dump textures every frames. The dumped textures and model will appear in C:\VRML. You will find +100 textures .bmp (depends of the complexicity of the area) and a .wrl model file. I suggest you to select all the files created and move them in a new folder. I use many subfolder for my different projects: So you can see I sort the different ripped areas. Always make sure to move the dumped textures and model before doing another rip as the model file is overwritten and you would get tons of duplicated texture. ___ If the ROM doesn't start or if the screen is black, it might be because the game doesn't support the plugin and it is probably impossible to rip. You can try launching the game with the default Graphic Plugin Jabo's Direct3D8 (if you don't have it, use RiceVideo), reach the area you want and do a Save State. Then launch the game with Nemu64 and load the Save State. Most of the time it will work. You can refer to the google sheet I linked at the top. ___ One thing you will notice is that since all textures are .bmp, there is no transparent texture (.png). All textures come with 2 files: XXXXXXXX_c.bmp = Texture XXXXXXXX_a.bmp = Define the alpha of the texture The _a is the alpha of the texture, which mean you can transform the _c into a png using it. I will explain the process later. If the _a is just a black texture, then the _c is not a translucent texture. If the _a and the _c are the exact same texture, then _c is not a translucent texture either. You can see many textures that don't really seem useful, they either come from the player hud or the skybox. In the above screenshot, you can see a ladder texture which has its alpha .bmp (6DF61CAE_a.bmp) . So we will be able to transform it into a png. But you can also see that only one side of the ladder is there. To save memory on the Nintendo 64, many of the textures were only half and were mirrored once (or twice) when applied in the games. I will explain later how to mirror the textures (really easy with Paint / Paint 3D) and how to apply them correctly on models. You can also notice that all the textures are upside-down, but once applied on models, it will be good. So, while for model you shouldn't modify the texture, if you want to use them in hammer, I recommend you to rotate them. You can do it by opening the picture in the default Photos app of windows and click on the rotating button 2 times. Using RiceVideo plugin, you can dump all textures that you see in the game. These textures will be more complete than the VRML textures and they will have transparency. I will explain how to use RiceVideo later. ___________________________________________________________________________________________________ Step2: Load the wrl If you use my tool, you can directly convert the .wrl file to .obj, so skip to Step3 I also recommend that you use it as it is way faster and doesn't lose any data from the wrl. At the bottom, you can find output.wrl. It is the model of the area. Open Blender 2.63. Make sure to use this 2.63 version and not a newer, otherwise you will get problems like I mentionned in the Step0. The groups name will be called "Shape.XXX" (where XXX is a number) preventing you from knowing which texture to apply. When you start Blender, you will see a box and a camera. Press A two times to select everything, press your Delete key and then Enter. The 3D view is now empty, so we can import the .wrl inside Blender. Click on File -> Import -> X3D Extensible 3D (.x3d/.wrl) The model should now be loaded. But we wont modify it with Blender. If you know how to use Blender, feel free to use it instead of Milkshape. This guide is adapted to people who have no experience with 3d modelling software as Milkshape is really easy to use. The interface is a lot like Hammer with a 3D view and three 2D grids. We will now export the model as a .obj Click on File -> Export -> Wavefront (.obj) And export it into the same folder as the .wrl ___________________________________________________________________________________________________ Step3: Import in Milkshape Launch Milkshape, if you followed the Step0, you should have the full version. Click on File -> Import -> Wavefront OBJ and select the .obj file you just exported. The model is now imported, but depending of the game, the visible faces might be reversed and you would only see black textures on the 3D view. You need to reverse the Vertex order. Do Ctrl + A to select every vertices. Click on Face -> Reverse Vertex Order (Ctrl Shift F). If after this step, the model has still black parts, click on Face -> Smooth All (Ctrl M). Under Groups, check Auto Smooth, so you will no longer need to do the Smooth All in the future The model is now correctly visible in the 3D view, but the textures are not correctly applied on most faces. So we will need to delete all current Materials. If you use my tool, you can directly delete all the materials from the .obj You can also do the Revert Vertex Order and the scaling. So you can skip to Step4, if you have done everything needed Go to the Materials tab and launch the AutoClicker. If you use the one I linked, set everything to 0 except the 1/100 S. Put 2 to make it click every 0.02 second. Then put your mouse on the Delete button in Milkshape and press the Start Hotkey of the Autoclicker (Ctrl F2 per default). Wait until it's done, and press Ctrl F3 to stop it. There might be a slight delay before it actually stop. I recommend you to save that scaled model without any texture under a new name. It will be easier for you to extract the different models of the area. Depending of the game, the model might be too small for you to easily edit it, so I recommend you to scale it up. For the Zelda games and Mario64, scaling the model by 80 is good. For the final export of the model, you will need to scale it again (with a different value). Do Ctrl + A to select everything, and click on the Model tab, then the Scale button. In the Scale Options, click on Origin and set a value of 80 (or whatever you want) in the three text boxes. You can now press the button Scale. Again make a save of that model (or just overwrite the previous one). ___________________________________________________________________________________________________ Step4: Get the model you want So now let's say you want a specific model of the room. You simply need to delete the stuff you don't need. If you use Blender (2.80 or less), delete the parts of the model you dont need and skip to Step5. Save your current file in a subfolder to keep things clean. I have a different folder for each model I rip. If some models are related, I put them in the same folder. For example, in the Totem folder, I have a model of a Small Totem and a Big Totem from the Fire Temple first room. Click on the Model tab, then the Select button. In the Select Options, click on Face. To move around in the 2D grids and 3D view, hold Ctrl, use the Left Click and move your mouse. To unselect everything, click on Edit > Select None (Ctrl Shift A). Make selection boxes in the 2D views to select the model you want. You will probably select others objects around it, so it will take few steps to get the model you want. Once stuff is selected, click on Edit > Select Invert (Ctrl I), and press you Delete key. Repeat that until you only have the model you want. If you are having trouble selecting only a specific part of the model, try on the different 2D views. If you are having issue deleting small vertices of another object, you can also click on Vertex in the Select Options. Once you have your model, you need to center it at the origin of Milkshape, that will be easier to rotate the prop in Hammer. Click on the Model tab, then the Move button. In the Move Options, make sure each textbox is at 0.0 and change Relative to Absolute. You can now press the button Move. ___________________________________________________________________________________________________ Step5: Texturing the model If you use my tool, texturing the model can be done in one second. Export an untextured .obj with Milkshape/Blender and load it in my tool. Press the Apply all materials on the .obj button and save the new .obj (That requires the objects name to contain the texture name) You can now skip to Step6. If you see black faces on your model, that mean the backface of the model is enabled. You can disable it by right clicking on the 3D view, and unchecking Draw Backfaces. Also make sure you are in the Textured mode of the 3D view and not Smooth Shaded otherwise you won't see textures once you apply them. So now you only have the model you want to rip. Go in Groups tab. You can see different groups with <No Material> applied, 4 in my case. Their name is what will tell you which texture to apply. That's where people who didn't use Blender 2.63 to import the .wrl will get problems as the name will be replaced with Shape.### (### being a number). So you can see that in the 4 groups, 2 use the same texture: 548308A0_c.bmp and 7F05D05B_c.bmp. So for ease, we can regroup them, to only have 2 groups in total. Make sure nothing is selected in the 2D views (Ctrl Shift A). Either Double-Click on a group name or click once on a group, then click on Select. Do the same for the other group. Copy the name of the texture somewhere so you don't lose it (i.e. a temporary txt file) and then click on Regroup. That will merge the selected groups into a new one called Regroup01 (the next merge will be called Regroup02, etc...) You can now select that new group, then paste the texture name in the small textbox and click on Rename. Unselect everything (Ctrl Shift A) and do the same for the next groups. Once you have done that for all the groups, you should have a much cleaner list. So now you have the list of used textures, you can find and copy them to your model folder. Back to Milkshape, in the Groups tab, select one of the group and copy its name. Then go in the Materials tab. Click on New, it will create a new material called Material01 (next time it will be Material02, etc...). Paste the name of the group in the textbox and click Rename. Then click on the first <none> to browse to the texture (should be fast if you already added them in your model folder). Then you need to Assign that material to the selected group, you can either double click on the material name or click on the Assign button. Once it's done, unselect everything with Ctrl+Shift+A. If you are in the Selection mode, you can also click in an empty area of the 2D view to unselect all. Do that for each group until your model is fully textured. It's possible that the name of a group doesn't have the texture name in it. Usually it's because its an useless element that you can delete. But I got that issue on the Eye Switch model from Zelda which had its sides without any known texture. In that case, I simply applied the Eye texture on the sides and it gave the correct result. So if that happens, look at what that group is used for and if you can delete it. ___________________________________________________________________________________________________ Step6: VTF Conversion and .qc Creation So if you followed what I said previously, in the folder of your current model you have the used textures. We will convert them to the .vtf format using VIDE. So launch VIDE and press the 8th button of the tool bar for the Mass VTF Editor. Copy the path of your model folder: And paste it in the Source Directory and Target Directory in VIDE. Set the picture format to BMP so it will convert every .bmp of the folder. Then press Apply. If your model use .png and .bmp, first set the format to BMP, click Apply, then click Return, change the format to PNG and click Apply again. The next step is to create a vmt for each vtf, which would be long to do manually. To do it faster, we will use My Mass VMT Generator. Download it (link at the top), extract the .zip where you want and launch the .exe. So at the top you have the Texture Shader. Models only support 2 shaders: UnlitGeneric and VertexLitGeneric. The shader we are going to use is VertexLitGeneric. But if you want one of your material to be fullbright, you can use UnlitGeneric. Select the Surfaceprop you want, although it's not needed for a model. As for the Parameters, you will need $model. If your texture has transparency, you will need $translucent or $alphatest too. At the bottom left, there is the browse button. Use it to navigate to the folder with your .vtf files. So now you have the vtf files loaded, select them all by holding left click and dragging down. You need to add the Basetexture path. The syntax is the following: MyFolder/AnotherSubFolder/ (the ending / will be added if you forget it) You can add as many subfolder as you want. Once you are done, select atleast one .vtf file and click on Preview to see what the vmt will look like. If multiple vtf are selected, it will show for only one of them. If the vmt looks good for you, make sure the vtf files you want are selected and click on Generate. It will create the vmt files next to the vtfs. If you have one picture that needs transparency but not the others, select that vtf only and generate the vmt with its own parameter. Save the path you used for the vmt somwhere as you will need it for the .qc For my model, I used models/moltard/OOT_FT/Detail/Totem/, which mean my vmt will load a vtf in materials/models/moltard/OOT_FT/Detail/Totem/ Remember that a model doesn't load a .vtf file. It only loads a .vmt in the folder it is compiled for. The .vmt then has the path that lead to the .vtf, which means you could have the .vmt and .vtf in completly different folders. But for ease, usually you have the vmt and the vtf in the same folder. So now you need a .smd file, it is the Source format you will compile into a .mdl thanks to a .qc file and Crowbar. You will need to scale the model depending of the game. How to figure out the best scale possible What you can do is import a Counter-strike model in milkshape/blender and compare it with the scale Counter Strike Player Model Click to download it I included a .smd and a .obj, so you can import either Once you have scaled your model, you can export it as a .smd Click on File -> Export -> Half-Life SMD and name it like your Milkshape file. In a .qc file, you can change the $scale of the model compiled. _________ Zelda related, while the 80 then 14 scale is perfect for an exact reproduction (Link being the size of a CT model), it is not adapted for ze gameplay. As you need to think about zombies, if the hallways are too small in your map, it won't be fun for zombies who will get bullied. I have used $scale 1.6 in the qc for my lastest Zelda projects (Shadow Temple, Fire Temple, Ikana) Here you can see the Stone Tower Temple (Majora's Mask), I built 2 years ago for my Ikana project with a $scale 1 And here is the Ikana project, that I restarted 1,5 month ago, with a $scale 1.6 It was faster to build cause I could use bigger units (since the areas were larger) and probably because I had more experience building. _________ Create a new text file and change the extension to .qc Paste this into it: $scale 1 // scale up the model after compile $modelname "moltard/OOT_FT/Detail/Totem/TotemBig.mdl" // path of the model once compiled, relative to models/ $staticprop // allow the prop to be static/dynamic $surfaceprop "rock" // the surface property $body FT_Models "TotemBig.smd" // the smd you exported $cdmaterials "models/moltard/OOT_FT/Detail/Totem" // where the model load the vmts, relative to materials/ $sequence idle "TotemBig" activity ACT_IDLE -1 fps 1 // the smd for the 'idle' animation (you are not forced to put .smd) $collisionmodel "TotemBig.smd"{ // the collisions of the model $concave $automass } If you followed the Step0, your Crowbar is setup for the game you want (CS:S / CS:GO). So now you need to compile the model. ___________________________________________________________________________________________________ Step7: Compilation Check if you have the needed files: .smd .qc .vtf and .vmt in their folder Open Crowbar and drag the .qc file on it. You can then press the Compile button. Once the model is compiled, you can have 3 choices: - Click on Goto and Crowbar will open the directory where the .mdl file is. - Click on Recompile will obviously recompile the model, so if you need to edit a parameter of the .qc, you can then compile again - Click on Use in View will open the View tab From there, you can click on the button View to open the model in the Model Viewer of your game _________ Problems that can happen on the model Error in the compile log: Probably an invalid parameter of the .qc, you should see in the log the exact problem. There is no Model appearing on the Model Viewer: Either you put LightMappedGeneric in the model vmts or you did something wrong to the model in Milshape. In the first case, simply replace the shader of the vmt with VertexLitGeneric. For the second case, retart from the untextured .obj Black/Purple textures (= missing texture): On CS:GO, the missing texture result in a totally black model (which is really dumb imo). On CS:S, the missing texture is the black purple texture In the model viewer, look at the Model tab, if there is no VMTs Loaded, the following error appear: *** ERROR *** Model attemped to load one or more VMTs it can't find That means the VMTs are not in the folder you specified in the .qc file or they are not named correctly. In the Model tab, you can also see at the bottom a select list called Materials used. This is the list of VMTs the model tries to load. The name of the VMTs loaded by the model are the same as the textures file name you used Milkshape. So make sure the VMTs are named accordingly. That's one of the difference with exporting .smd in Blender (Blender Source Tool). With Blender, the VMTs name needs to be named like the Material name and not like the file name. If the VMTs are loaded but the textures are still missing, that means the VMTs target non existant VTFs. So verify if the VTFs are there or if they are correctly named. ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ Tips and Trick RiceVideo At the Step0, I talked about the plugin RiceVideo that was included with Project64. One if its feature is to dump textures. While VRML does it too when you rip a model, you noticed there was no .png (transparent textures), only _c.bmp and _a.bmp RiceVideo can dump every single texture you see in the game with their transparency. So go in Project64 settings, change the Graphic plugin to RiceVideo 0.4.4 RELEASE. Then go in Configure Graphic Plugin, under Texture Enhancement & Filters, check Dump textures to files. Press OK and launch your game. Go in the area where you want to dump textures and the plugin will do its job. A folder called texture_dump will be located in the same folder as RiceVideo.dll (Plugin/GFX per default). In there, you will find folders for the different game you used the plugin on. And for each there will be 2 (or more) folders: ci_by_png png_all Dependings of the games, you will find the textures you want in either of those folder. I mentionned earlier that all textures obtained from VRML are upside-down. That is not the case with RiceVideo textures which have directly the good rotation. So if you need to use one of these texture on a model, you will need to rotate it and mirror it. Here is an example of a flower: From VRML, .bmp so no transparency. From RiceVideo, .png transparency but upside down. Previous flower after rotation. Previous flower after I mirrored it. While Paint can rotate and mirror pictures, it will remove any transparency when you save the picture. So it's obviously more adapted for the .bmp pictures you get with VRML. I have used Paint 3D which come with Windows 10 and it's pretty fast to mirror pictures and preserve the .png transparency. To rotate a picture, you can either rotate it in the Photos application of Windows (like I mentionned at the beginning). Or you can do it in Paint 3D (if you don't have it, use Gimp or something else). Right click on the picture, click on Edit with Paint 3D to open the software. Zoom in with your mousewheel if it's too small to see. Do Ctrl A to select the picture. Tools will appear on the sidebar (if they dont, press M😞 If you haven't rotated the picture earlier, click on the Rotating button 2 times Click on the Mirror button (Horizontal) Once you are done, click away to disable the Tools and do Ctrl S to save the picture. _________ Mirroring Pictures At the beginning, I talked about the N64 using Half textures to save memory. The flower of the previous trick is one of them. Applying it on the model in Milkshape will not give us the result we want. So we will need to Mirror the flower to get its symmetry. If you download my tool, you can directly mirror pictures in it. Again, I will use Paint 3D, so open the picture like earlier. Do Ctrl A to select the picture, then do Ctrl C to copy it. Then click on Canvas on the top bar. On the sidebar: Make sure that When resizing the canvas, adjust my image as well is unchecked Make sure the Aspect ratio is locked is checked Make sure Pixels is selected and not Percentage You can now grab the square on the right on the picture to double its length. On the sidebar you can see the length, so if it was 16px, increase it to 32px. Since you copied the picture earlier, you can now paste it, move it to the empty space you just created and mirror it. You can now save the picture. Of course, depending of the texture, you will either need to Mirror it horizontally, vertically or both. Go back in Milkshape. If you load that new picture in your Materials, you will now notice a new problem: - The texture is duplicated on the model, which is pretty logic since we doubled its size. We now need to use the Texture Coordinate Editor of Milkshape. Click on Window > Texture Coordinate Editor (Ctrl T). So in this small window, you can see few tools, few options you can check and a select bar where you choose the Group you want to modify. In Milkshape, in the Group tab, double click on the group you want to select. Select that group too in the Texture Coordinate Editor. The group you selected in Milkshape will have a white rectangle in the Texture Coordinate Editor so you know when you selected the correct one. Click on the Scale option, in Factor you can see 2 textboxes. The first one is for the X axis and the second for the Y axis. In our case, we only mirrored horizontally (X axis), so we put 0.5 in the first textbox. To be safe, you can also check Lock Y, so the Y scaling will not get modified if you mess with the other value. Once you are ready, click on the S button next to the textboxes. You will see the change on the Texture Coordinate Editor. To see what changed on the 3D view, simply click anywhere on it. Do the same for the others groups that need it. Depending how you mirrored your picture, you might also need to Scale by 0.5 on the Y axis. One problem you can encounter is after you re-scaled the texture, it is not aligned anymore. The fix is simple, click on the Move Tool of the Texture Coordinate Editor. Again there is two textboxes. Put 0.5 in the textbox you need and press the M button next to the textboxes. In my case since it's not aligned on the X axis, I put 0.5 in the first textbox. Click on the 3D view, and it should be fixed. While 0.5 is the solution and will fix the texture alignment, if, in the Texture Coordinate Editor, the "box" is not on the texture and if you are accurate like me, you might want to fix it. You can use negative numbers in the textboxes, so just put -1 in the textbox you need and press the M button. _________ Draw the backfaces of models To stay on the topic of the flower model, one issue you will encounter is that, once compiled, the backfaces of the model will not be rendered. On the 3D view, you can enable and disable Draw Backfaces to see the difference: With the backfaces enabled With the backfaces disabled To fix it, you need to add the parameter $nocull 1 to your vmts. Here is one of the .vmt of the model: "VertexLitGeneric" { "$surfaceprop" "grass" "$basetexture" "models/moltard/OOT_KG/Flower/16D12D0D_c" "$model" "1" "$nocull" "1" "$alphatest" "1" } You can also see that I use $alphatest 1 instead of $translucent 1. In the case of this model, because multiple translucent texture were crossing each other (flower + leaf), it wasn't rendering correctly. $alphatest fix that issue, you can read more on valve wiki about $translucent. _________ Get a .png texture from the _a.bmp and _c.bmp As you have seen previously, you can easily get translucent texture using RiceVideo. But in case you are not able, your only alternative is to use the _a.bmp with the _c.bmp to get the .png. Depending what the _a.bmp look like, you can see if the texture need or doesn't need transparency: Totally black texture, the texture doesn't need transparency The _a.bmp and _c.bmp are the same, the texture doesn't need transparency The _a.bmp is made only of black and white, the texture need transparency If you download my tool, you can create the .png by loading both bmp. For the example, I will use the leaf of the flower model of earlier. Here you can see the _a.bmp, the _c.bmp and the .png we should get as result. Download Gimp if you haven't done it already, the link is at the top. Feel free to use Photoshop if you are more experienced with it. Open both textures in Gimp (in 2 separate windows), by clicking on File > Open, 2 times. In the _c texture, click on Layer > Transparency > Add Alpha Channel. In the _a texture, do Ctrl A to select it, then Ctrl C to copy it. Go back in the _c texture and paste it. You now have the _a texture on top of the _c texture. We will now use the 2 tools windows which might be disabled on Gimp Launch. To enable them click on Windows -> Recently Closed Docks. Go in the Layers Window. Right click on Floating Selection (Pasted Layer) and click on To New Layer. It will then become Pasted Layer. Go in the Toolbox, and select the Magic Wand. Click on the white areas of the alpha texture. To select multiple areas, hold Shift while clicking. Once you have selected everything that needs to be removed, click on the Eye of the Pasted Layer in the Layers Window. The alpha texture won't be visible, so you can now select the _c texture by clicking on it in the Layers Window. Press the Delete key on your keyboard and it will remove every parts of the _c texture that need to be transparent. You can now save it as a .png Click on File -> Export As (Ctrl Shift E). Give it the same name as the _c texture (1249F6AB_c.png in my example). Obviously, when using a transparent texture, don't forget to use either $translucent or $alphatest in the .vmt _________ Texture with wrong color In some case, a texture ingame has a specific color. But the texture obtained through VRML / RiceVideo is kinda grey-white, or another color. The best you can do is check ingame the color and take a screenshot of the texture. Then use the Eyedropper tool of any software (even Paint can do it) to get the RGB code of the color. Use VTFEdit, import the picture and the usual window appear. You can turn the texture grey by setting the Normal Format to I8 and the Alpha Format to IA88. Press OK and save the vtf. In the .vmt, you will add a $color parameter "$color" "{255 255 255}" Replace it by your RGB code. $color only work with brushes. If you want to use color on a model, you need to use $color2. The syntax stays the same. ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ Thanks for reading this guide, it should be more complete now and more clear. Check the Nintendo64 Mapping Guide and my N64 Mapping Tool, the links are at the top.
  10. Building a N64 map in Source Engine This guide assume you have read Ripping N64 models to Source - V2 and you know how to rip models from N64 games. Here we will focus on how to build a replica of an area from any N64 game. Again, if the emulator cannot start the game with Nemu64 enabled, then the game is probably impossible to rip. Don't forget to take a look at my tool as it will make the texturing way easier: The method I use is basically building the map in Hammer with brushes, using a Reference Model. I add a prop_static in the map, browse to the model and I can start building following its shape. To make things clean, I use the visgroups to easily Enable and Disable the different models. Here you can see all the rooms of the Stone Tower Temple from Majora's Mask. ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ Getting a reference model So, you know how to use the plugin to get the VRML, you can extract the model you want and compile it to Source engine. If you don't, go back reading the previous guide. Convert the .wrl to .obj, import it into Milkshape, scale it by the amount you need and delete all materials. Once you have your model with all materials deleted, do a final scale up to adjust it for your game and export the .smd Use my tool to convert the .wrl and automatically delete every texture of the .obj. One important thing to know is the default material path used by a model when you don't specify one in the .qc file. It will take the path of the $modelname and change the model name into a folder. For example: $scale 1 $modelname "oot_trace/OOT_FT/OOT_FT_Room1a.mdl" $staticprop $body oot_FT_Port "OOT_FT_Room1a.smd" $sequence idle "OOT_FT_Room1a" activity ACT_IDLE -1 fps 1 This is an example of .qc I have been using for my reference models in CS:S. In this case, the model will look for the VMTs in materials\models\oot_trace\OOT_FT\OOT_FT_Room1a\. You remember that we deleted all materials, so which one would he look for ? Well the .smd need atleast 1 material and if none exist, it create one called default. So in this case, the model is looking for a default.vmt in the above folder. While for CS:S it's fine to have missing texture for the reference model (you have seen above the purple black texture). It's not on CS:GO, because that game has the awesome idea of displaying missing textures as blackness. Pretty cool right, you can't do any mapping with this. So a solution I found was to make the model load a default texture. $scale 1.6 $modelname "oot_trace/OOT_FT/OOT_FT_Room1a.mdl" $staticprop $body oot_FT_Port "OOT_FT_Room1a.smd" $cdmaterials "n64_reference" $sequence idle "OOT_FT_Room1a" activity ACT_IDLE -1 fps 1 You can see this new line $cdmaterials "n64_reference". The model will now look for default.vmt in that folder. Of course, what you need now is the actual .vmt and .vtf to load. So why not the good old missing texture from all the other source game. You can download the vmt and vtf by cliking here Texture Reference. The texture might look a bit weird compared to CS:S, but once you zoom in, it's fine. Feel free to use any other .vtf you want, even though the purple black is simple to use in my opinion. Edit the $basetexture in default.vmt For the .qc file, I recommend you to have different 'base' folders for the reference models and the map models. For example, here i used oot_trace/OOT_FT (OOT_FT = Ocarina of Time Fire Temple). All my reference models use that path. For the ripped models I add in the map, I use moltard/OOT_FT/. I plan to make the reference model creation automatic with my tool. ___________________________________________________________________________________________________ Adding the model in your map Add a prop_static in your map (if you are starting a new map, make a brush and add the prop_static on that brush). Browse to the model you compiled. Hold Alt and move the prop to align it on the grid. Depending of the size of the prop, you will be able to build with big or small unit. Zelda related, I had to build everything with Unit 1, when I used the original scale. After I scaled up by 1.6, I could build with Unit 8, making everything way easier and faster to build. So now that you have your model, add it to a visgroup. Select the prop and click on the red cube of the topbar. A small window appear. Make sure 'Create new visgroup' is checked. Add a name and click OK. Your model will disappear from the views, and you can see the new Visgroup added on the right. You can check and uncheck it to make the model appear and disappear. In my first screenshot, you might have noticed I have Sub Visgroup like those you find in the Auto tab. To make them, select a visgroup with your Right Click and drag it on another existing visgroup. To create a new visgroup without using any brush/entity, click on the Edit button. A small window appear, click on New group at the bottom, it will make a new visgroup, you can then rename it and Close the window. You can now drag your model visgroup on the new one _________ Method to align reference models I have a method to quickly add all the reference models of your map, that might not work with all games. In Zelda games, all the models of an area/temple/cave all use the exact same origin. You can see that the first room and the second room of the Fire Temple got the same origin point. So assuming you named the reference models in a logic way (Room1, Room2, Room3, etc...), you can quickly edit the path of the prop_static to select the model you want. Select your first reference prop, copy it (Ctrl C) and do Paste Special (Ctrl Shift V). Set the amount of copy you want to make. If you have 12 models in your area, put 12. Then press Enter or click OK. In my case, 28 because there are 28 differents room in the Fire Temple of Ocarina of time. All the models will be stacked on the first reference model. The next step is to select the model and change its path. Since everything is stacked, you can Click on the first model Change the path (in my case to Room2a) Click on the first model again Change again the path (now Room3a) etc... After doing that for all the models, everything is perfectly aligned and the rooms are next to each others. ___________________________________________________________________________________________________ Build the map So now, it's obvious, you follow the shape of the model to build your brushes. I recommend you to build with Nodraw, and use the 3D Flat Mode of the 3D view. Click on the word Camera to change the mode. While it might seems really easy mapping at first, once you encounter complex shapes, you will have issues building. The 2D views will not render every walls you need to build. Let's take the lava room of the Fire temple for a good example You can probably see the problem. The 2D views cannot help us build, so we need to use the 3D view. But even the 3D view doesn't help much, because of the way textures are applied, you cannot know the size of the brushes you need to make. I found out the method to build after struggling building the Ikana Valley in my old project. Change the 3D view from Textured/Flat to Wireframe. Now, you can magically see how every solid were built in the original N64 games. Triangular shapes everywhere. Back then, every shape had to be triangular (even the Source engine transform brushes into triangles during compile). So while we still cannot use the 2D views to see what we are building, we have the 3D view. You will mainly need to work with brushes with 5 faces in this case. The vertex tool will be your best friend. At first you will surely create many invalid solid (Alt + P to check the errors). But the more you use it, the less you make errors. Here is the Lava Room built and textured (took over 300 brushes to make): _________ Best way to never get invalid solids If you always move 2 aligned vertices of a brush, and if you always work with brushes with 5 faces, there will be 0 issues. Here is a video that show how you should always move the 2 adjacents vertices together. That way you can easily duplicate the brush, move the vertices to create any shape you want. The problems will happen when you will have to use brushes with 4 faces, which are kinda weird. They can be invalid while Hammer doesn't notice it. I often got that problem when building in wireframe mode. In that mode, I wouldn't notice that the brush was concave. The solution is pretty simple to fix, you just need to switch 2 vertices position. _________ Another problems of the brushes with 4 faces These brush are really not well handled by Hammer and when reloading the map, you could have the following problem A vertice get split into few mini-vertices. You will only see it if you zoom in the 2D views and you might notice cracks between the brushes in the 3D views. You can try fixing it with the Vertex Tool, by making a box to select all mini vertices. Then press Ctrl B to merge them all together. Once you reload the map, the problem will surely appear again. If these brushes are func_detail, you won't have any issue during the compilation, but it's always better to not have these glitched brushes. The best way to prevent that is, like I said above, to use brushes with 5 faces. Or to use HammerPatch which is not something I recommend. While it's working as intended, that makes you dependent from a modification of Hammer. And I assume HammerPatch doesn't work on CS:GO since that game runs a modified version of Hammer. _________ Brushes vertices glitching on map reload Sometimes, when doing brushwork with 4 faces solids, these brushes can get modified when you reload the .vmf It mostly happens on very large brushes, and it splits a vertex in 2 (or more) mini-vertices with an offset of like 0.1 unit. So the brush no longer has all his vertices aligned on the grid but it's the kind of brush that need to be a func_detail anyway. In this case, it is fine, you cannot really do anything to fix the issue, because that's how Hammer act with those brushes. If you really want to fix the problem, select the Vertex Tool. Make a selection box around the whole brush to select all vertexes at the same time. Do Ctrl B to snap to the closest grid point each vertexes and if the message Merge Vertices message appear, press Yes. It might just re-do the exact same problem on the map reload. But if the offset is very large (like 10 units), your brush is probably incorrectly made and you might aswell remake it. _________ Brushes with 3 faces error To make brushes with 4 faces, you usually use the vertex tool and merge the vertices together. If you merge the wrong vertices together, you can end up with a 3 faces solid. It is obviously invalid and need to be fixed. You can remake the brush or you can transform it back into a 4 faces solid. To do so, select the brush and the Vertex Tool. On one of the 2D views, you should see 2 vertices that are not connected together. Select both (Hold Ctrl) and press Ctrl F to reconnect them. ___________________________________________________________________________________________________ Texturing the map You have all the textures of the area in the VRML rip and if needed, you can use RiceVideo to get some .png. Since we want to do an exact replica, the texturework should be like in the original game. _________ Use my tool to automatically texture the .obj To know which texture to apply on which face, we will need to use Milkshape and do the texturing in it. Since you know how to do the texturing for a single model, it won't change here. It can take some times though because there are hundreds of different groups. You can of course delete many groups that are unneeded, or that you already converted as a single model. _________ Another way is to look in the game what texture seems to be used, but make sure you are using the good one. As for the texture scale in hammer, it's all about adjusting it until you get the good one. To help you, find a distinctive point on a texture, and count how many time it appears. i.e. Count the bricks of a brick texture in Milkshape. But luckily, once you have found the texture scale of one texture, that texture scale is the same for many others textures in the area. It can change of course, but rarely. With the Zelda maps, 2.25 on X and Y axis was the scale I used the most. ___________________________________________________________________________________________________ 3D Skybox Assuming you know how to build 3D skybox, you know that per default the brushes in the skybox are 1/16 the size of the map brush. Knowing that, you can compile a downscaled reference model, by changing the $scale value in the .qc file. For the example, I will use the Fire Temple map I'm doing. As you can see, the spawn area is surrounded by Skybox brushes. Using a 3D skybox for this area was the cleanest way I could do. Not only was the reference model massive but the area would have been too big and if people don't even visit, what's the point of adding it in the main map. In red you can see the playable area. Everything around is the reference model. As with any 3D skybox, I selected brushes from my main map as reference, I duplicated them, scaled them down along with a sky_camera which I moved in a 3D Skybox. Once I did that, I added my 'mini reference model' in the 3D skybox, and I aligned it with my reference brushes. Once it's correctly added, I simply needed to rip the 'skybox area' and texture it in Milkshape. After that, I convert to .smd, I compile with a 1/16 scale in the $qc, and I align it with my mini reference model. As you can see, everything is perfecly aligned. So I add all the skybox references (model and brushes) into a visgroup to disable them for the compile. I could also delete them, but it's better to have a backup in case I edit the skybox Once compiled, here is the result in game ___________________________________________________________________________________________________ ___________________________________________________________________________________________________ Thanks for reading this guide, let me know if you have any question or if I should add some informations.
  11. Nintendo64 Mapping Tool Here is a google sheet where I listed few games that can be ripped or not: https://docs.google.com/spreadsheets/d/1ijRktBuMKTKaxeZiHErsZLJe59a9MEr1hOtKd19SGTo/edit?usp=sharing If you are interested in ripping Rayman2, it's a mess to do with N64 but not on PC. Someone already ripped all areas, so you can check this: https://raymanpc.com/forum/viewtopic.php?f=89&t=25072 Check out the other guides: In the other guides, I talked about a tool I was making to make some process of ripping N64 models faster. So here it is. Update: January 2020, the tool was updated with a remade GUI and new options Here is a preview of some parts of the tool ___________________________________________________________________________________________________ So what can it do ? Convert wrl file to obj - Better than importing in Blender Delete all materials from an obj - Way faster than deleting all manually Delete all unused materials from an obj - Makes it easy to clean a obj file from useless materials Automatically create and apply materials for every objects of the model - Does it in less than a second, whereas it could take me 1 hour to texture a whole area Modify the obj file: Reverse Vertex Order (explained in the guide, it can be needed for some models) Scale Uniformly or Non Uniformly the model by given values Rotate the model by given values Merge all objects sharing a texture together Sort all objects and materials by their name (alphabetically) Blacklist = Delete parts of a model that use a list of given texture Obj To Smd - Convert a obj file to smd Copy all textures used by an obj file Merge together multiple obj files - You can either: Merge all obj files located in a folder of your choice Merge the obj files you want located anywhere Mirror a given picture - Horizontally and/or Vertically Create a transparent png picture from a bmp and its alpha (the files you get in the vrml dump) Blacklist Settings - Add games, Add textures to its blacklist (to use in Modify Obj), and copy all textures from a blacklist into a given folder ___________________________________________________________________________________________________ History October 2018 - Made the tool with Python3, command prompt. Required Python to be installed on a computer to be useable so it was meh End of 2018 - I made a C# WPF app and used IronPython to load the python script, so it didnt need Python installed to be useable by anyone April 2019 - I finally completly made it in C# with WPF January 2020 - I rewrote it completly, still in C# WPF. The tool is even faster now ___________________________________________________________________________________________________ How to use it It's pretty straight-forward to use the tool, I even added small paragraph explaining what is the goal of each part of the tool. And some tooltip on the checkboxes of Modify Obj No point in explaining how basic stuff work, just load the wrl/obj/picture and press buttons. Mirror Picture Old Picture Mirrored Picture Bmp to Png Alpha texture Real Texture Transparent .png Textures Blacklist Settings It could be confusing on what exactly is the goal of that part of the tool, but the main goal here is for game like Rayman 2. That game has an issue when loaded with the vrml plugin, all playermodel (and dynamic enemies) get completly distorded, so not only is it impossible to see a thing in the game, but it's also a mess in vrml dump. Below is a model you would probably get And here is the result after my tool deleted objects that use specific textures So instantly, all the useless garbage gets removed. Obviously, my tool cannot guess which texture is bad and which is good, so that's where the blacklist comes in. You can add new games, and specify a list of textures that should be blacklisted. In my case, I manually checked which textures were used by the distorded models and added them to the blacklist. I also added an option to copy all blacklisted texture into a folder of your choice because why not. ___________________________________________________________________________________________________ Advice Make an untexured .obj file, and use that one in your 3D Editor (Blender/Milkshape/whatever). When you need to automatically texture it, just export it as obj and let the tool do the job. ___________________________________________________________________________________________________ Download Link Here is the Tool: https://www.dropbox.com/s/i0frwp46h690ga1/N64_Mapping_Tool_New.zip?dl=0 It comes with a .exe, a .dll and a .xml used for the texture blacklist ______ Old Versions: https://www.dropbox.com/s/cnsbmsa5ycdnrtf/N64MappingTool_v2.rar?dl=0 (First C# WPF version) https://www.dropbox.com/s/1y59rywc8kcx67w/N64MappingTool.rar?dl=0 (IronPython version) Original python scripts: https://www.dropbox.com/s/cpa4g4ze018g6cx/N64 Converter Python2.rar?dl=0 https://www.dropbox.com/s/yntubhymxqn2tjq/N64 Converter Python3.rar?dl=0 ___________________________________________________________________________________________________ Credits Thanks to Saddong for testing the tool when it was only Python and help me find bugs. Thanks to 44 Colt for testing the first .exe tool and helping me figure the problems. ___________________________________________________________________________________________________
  12. use google drive or mega do you have ze_piano_escape ?
  13. Tbh, Hammer is way easier to use than any other 3d editor out there. You just make blocks (called brushes), change their size on the different view (top, side, front) and you see the result on the 3d view. You can apply textures on the brushes. you can add entities to make the logic of the map: - brush entities by turning the brush you made into entities, that can be doors, rotating, triggers (invisible boxes that trigger event when player touch them, or hurt them, ...). - point entities by using the entity tool, there are logic_ entities and allow you to do cool systems using basic logic (random event, boolen (enabled or not),...). There are also the sound entities to play music (ambient_generic), and the models called props which can be static (stay where they are forever in the map), physics (move with physic) or dynamic (can be parented to stuff to be moved around). Anyone can really pick up hammer and build something. And there are many guides out there
  14. Botox kinda fixed every ze plugin by himself back when an update broke them. all css ze servers runs plugin made by him. They were all public for 1 year on his github page, until he made it private because all servers started looking the same, with nothing new. I'm pretty sure the csgo ze community has used his plugins. I have seen plugins 'made by AntiTeal' which were probably just botox's. So ye, like botox or not, ze servers wouldnt be the same without him
  15. @Neon I'm not finishing the existing stone tower map. I made my own, with the game texture, models. An exact reproduction (same scale as the game). I remake the whole Ikana area (final area of the game). the Stone tower (ST), stone tower temple (STT), inverted ST and inverted STT are build. (You can play the bhop map Stone Tower, that I released last year, which contain the ST and the first room of the STT) ikana castle is also 90 % built, the inside too. The bottom of the well is done. the ikana canyon / valley are also fully built, but not textured at all, which is pretty long to do (I havent touched the vmf since few months since I have build these ) what I need to build is the cemetery and the tombs below the cemetery. and I have been pretty lazy recently (since shroom3 is done )
  • Create New...