Jump to content

Mud-H

Members
  • Posts

    183
  • Joined

  • Last visited

Posts posted by Mud-H

  1. I have an issue with one of my models which cause the game to crash when I set it as a WeaponImage model. I have run it in debug and it crash during: void ColladaAppMesh::getPrimitives(const domGeometry* geometry).

     // Collada uses CCW for front face and Torque uses the opposite, so
    // for normal (non-inverted) meshes, the indices are flipped.
    if (appNode->invertMeshes)
           dstIndex[v] = itr->value;
    else
            dstIndex[2 - v] = itr->value;  <---Crash on that
    

    After some test I found that it's specific to that model. I guess there's something wrong with it but I can't figure what. I tried to invert the normal but not sure if it's what the invertMeshes check is about. I haven't tried but I guess standard models have the appNode->invertMeshes to true?

    For now I have simply decided to use another model but I'd like to find how to fix it, Anyone have an idea about what is happening?

  2. Looking forward to where @Mud-H's project (http://forums.torque3d.org/viewtopic.php?t=266) ends up, for instance in that regard.

    Yes, that editor seems nice. I wonder how is he doing ? He did not add any updates for a long time.

    Thanks for your comments, I never expected to be mentioned in a T3D releases discussion thread :shock:

    Sorry for the lacks of updates, I decided to cut on updates time and focus on making TorqueLab stable and clean. Also, I got back into game development and I keep updating TorqueLab to fit my game dev needs. I will try to make a new progress update soon.


    It's getting quite stable and features completed (in reference of default T3D editor). What I need to do now is to cleanup and optimized my scripts. There's a lot of scripts in there...

    So, since there's some interest, I will try to make a new update with reviewed installation process. Also, I started working on a pre-compiled demo using full template + UeberPack levels.


    Since we are in a release discussion thread, you think some of the T3D code that cause issues with TorqueLab could be fixed? Mostly about the GuiSwatchButtonCtrl bad mGridBitmap integration which store the bitmap wrong on saving and make the engine crash on next loading. Here's a link to the code changes I made: https://github.com/NordikLab/Torque3D/commit/4b1334db9f7e5edc99e54d55b0f8ff98ea0481bb#diff-c348008717952844f31149ead72c0633


    Also I have some problem with the GuiMenuBar, I can't get SubMenu items to works with stock codes. Not sure if I miss a concept about it but I made a basic hack for now, but it still need more changes. I'm thinking about making a new GuiMenu class which would work more like the MenuBar code. (Is there a simple way to expose the MenuBar class to scripts? Not familiar with that stuff...). Here's the hack I did for now: https://github.com/NordikLab/Torque3D/commit/05021ff72ffc879bd8387cba2776ca0712d61433#diff-61ad3cefe9e2956f6a06efa28c277b30

  3. On reflection ( no pun intended) not sure I recall why that downward mip adjustment... put it back to 11+1, netting us:

    I have lost you on that part... What should be put back to 11+1?


    Anyway, thanks for all the informations. That's a lot of new stuff for me and it will take some time to catch up... Before today, Mip was the sound of Roadrunner for me...


    I still haven't notice a change when playing with the Accumulation properties... I will try the smoothness to see if it work fine in my editor. The Smoothness range for the slider should be set to 0 to 8? What about the metalness? Currently they are both at 0 to 1, maybe it's why they seem to do nothing.

  4. Ok thanks for your help, my system is shaping up. I have create some composite map with Substance Designer so it's more simple to test changes :) I tried to play with EnvVolume and LevelInfo Cubemap, I noticed that the cubemap change doesn't get applied live. When I change LevelInfo cubemap, I won't see changes until I add and delete a envVolume object. Is that an issue with my editor or stock editor does the same? Any workaround?


    And how the MipTest cubemap should be used? I notice some yellow where metal should be and my composite map seem to leak on the texture (or it's the MipTest image...)

    http://mud-h.com/miscweb/t3dforum/PBR/envvolumeA.jpg

    If you look on the ground, there's some yellow/green color appearing. It's a normal behaviour with the MipTest?

  5. I'm not sure if I understand what you mean... I asked about how you add those special nodes icons on top of the node graph view (The little colored boxes), I don't have that and can't find how to add those, should be a v5 feature.


    Edit: Confirmed to be a v5 feature, I got the trial and I have the icons. I will have 30 days to decide if it worth the upgrade cost :)

  6. First, thanks a lot for your PBR works Azaezel, I have been quietly following this thread and I think this feature will allow Torque3D to catchup a bit on other engines.


    I have start experimenting with your PBR ressource and I have start implementing it in my TorqueLab editor. I'm still just starting and the PBR stuff is quite new to me. I'd like to understand more what I should do with the texture maps (I think some of the previous post will answer some of my interogations). I have some PBR-ready textures from GameTextures.com and I don't think they are 100% compatible with your PBR implementation. I will start tweaking and experimenting with them later but maybe some of you can help me with how I should use those textures. Here's a images showing the various maps included for 1 textures:

    http://mud-h.com/miscweb/t3dforum/PBR/MapsSample.jpg

    Which should be used as MetalMap and SmoothnessMap? I guess the AmbientOcclusion one is for AmbientOcclusion map and the mask is for the lights mask. About the normal, do the y+ is related to PBR or only a general preference?


    And what's the composite map exactly? I'm assuming that it can be use to combine the smoothness, ao and metal maps into one image using the RGB channels, right? So it can be left empty if using single maps?


    Now, about TorqueLab, everything seem to work quite right except that the Metalness/Smoothness slider does nothing and the Accumulation Properties neither. (I still need to compare with the standard editor setup, maybe I have missed something...) I will keep investigating how those things works, just let me know if there's something "special" I should be aware of to make it work rights...

    Here's a screenshot from my current experiments, it's not perfect but it' a start. (I need to fix the Cubemap setting in my custom material editors to test with cubemaps...)

    http://mud-h.com/miscweb/t3dforum/PBR/TLab_PBR_01.jpg


    Ok enough for now, I will get up to date with the latest discussion and start experimenting with Substance designer to get better results.

  7. I'm trying a new font in my project but it doesn't render with ANSI charset. I never had such issue in the past and I'm wondering why it's happening?

    Also, I'm really not familiar with charSet, could some charset cause issue for different language? What's the other most standard charSet that I should use, all other make the font render properly.


    If anyone would like to try in their Torque3D setup, there's a version available for free which cause the issue for me. I'd like to confirm that it's not a local issue.

    The font is Neuropol X and is available for free there: http://www.dafont.com/neuropol-x-free.font

  8. I have updated the GitHub page with up-to-date information. I have commit latest changes to master and development branches,you should always use the master for best stability but the development is also stable in general and might contains some experimental features,

    If anyone give it a try, I'd like to know how it went with the installation. For those not very familiar with Git, I will add detailled informations about how to set TorqueLab to update simply using GIT during the week.


    TorqueLab on GitHub

    TorqueLab Installation Page

    TorqueLab Source Code Changes

  9. It have been a while I haven't post updates. It's mostly because I have start to get back to my Torque projects and I adapt TorqueLab to them (while keep fixing bugs and issues).

    Cannot wait to see it with PBR.

    I might have a look at it soon but I haven't follow the progress about PBR feature much. Can you point me to latest ressource about PBR?

     

    Are you going to update the editor with the torque main line or are you going separately?


    Are you going to create a simply plug and play tool to install this editor over the torque engine?

    I'm not sure what you mean. TorqueLab work as a stand alone T3D Game Editor and is not compatible with default T3D Editor. I'm planning to update it later so it can be run on side of default editor but for now, the default tools/ folder need to be removed.

    The installation of TorqueLab is quite simple, delete tools/ folder, paste tools/ and tlab/ folder from the Git repository and you are almost ready to go... TorqueLab have few Source code changes requirement to prevent a crash issue (GuiSwatchButton have a bad coded mGridBitmap value which cause the engine to crash...), also there's some simple changes to provide extra features (Road/MeshRoad/River editor set/getSelectedNode for node manager, GlobalScale for ForestEditor brush tool, and more...). You can find all required informations on the GitHub page. (Some information might be out of date as now but in the following days I will review the informations and make sure everything is there).

    In my opinion the blue is a bit distracting. A dull color will be nice for the theme like close to black as in cryengine, or ps cc etc.

    I keep that in mind, I have start working on a styling system with a new more simple dark theme. I'm using CryEngine as reference for the new style already but it won't be a clone... (I want to avoid any color in it so the orangeish stuff will go).

    ------------------------------------------------------------------------------

    Now, time for a little update of what have changed in TorqueLab. I won't give much details on everything now but I will try to make new preview videos soon to show the latest works.

    So here some major updates I can think about:

    • The GuiEditor revamping have been starter

    • A new PostFxManager has been added

    • Ambient Manager has been updated and include a cloned PostFxManager

    • A new Vehicle Manager system has been add for my racing game development needs

    • Overall UI have been cleaned and a some unused profiles removed

    • Many bug fixes and general script enhancements

     

    So here's a little preview of the revamping of the GuiEditor. It's mostly the default editor with a new skin for now but there's already a new feature which I found quite usefull: Field Duplicator. The Field Duplicator allow to select GuiControls fields from a list and then you can update the selected fields on the selected GuiControls by using a referenced GuiControl for the field values. EX: You can apply the profile of a selected reference GuiControl to all selected GuIControls at same time instead of having to select the profile for each GuiControl individually. It's quite usefull for profile, extent, horiz/vertSizing, docking...

    You can see it in action in the new video I have published: (I suggest to watch it from youtube page because you can't make it fullscreen from here...

    )

    IllFMWfYK3k


    Now I will try to update the GitHub informations with appropriate instruction and files for the new TorqueLab v0.4 Alpha version. I will post a GitHub updated confirmation once everything is ready, until that, you should still be able to test it using the development branch but something might be missing...

    https://github.com/NordikLab/TorqueLab/

  10. Hi!

    I'm wondering if there's a way with stock engine code to call a windows batch file (.bat) or an external tool executable? The main reason I'm asking for that is that I want to delete files from torqueScript, is there a built-in way to do it that I'm not aware of?

    Even if there's a torque way to do it, I'd still like to know if it's possible to call external .bat or .exe?

  11. Awesome stuff! I wonder what is different about the T3D fog system and the one the Cry Engine uses? That's kind of the look I'm trying to achieve but it seems that I can't quite get it. It must be a difference in the rendering engine?

    I'm not really familliar with how FOG works on other engines but from what I remember when I was trying to get better FOG with T3D is that T3D system is quite basic and would need some enhancements to work like other modern FOG systems. Maybe someone else could define better how T3D FOG works and how it could be enhanced.

  12. I have start to add Fog settings to the AmbientManager. I also updated the "SkySystem" that allow to simply switch between sky using ScatterSky and sky using Sun and SkyBox. You can also create a new SkySystem from the manager. This is rough Work In Progress, I will continue Wednesday and would post a new video here. For now, you can watch a quick video I made from today's work:

  13. This looks really great Mud-H! Do you have any plans for PostFX settings or fog enhancements? I have a lot of trouble in those areas.

    Thanks for your comment!

    Yes, I do have plan for updating the PostFX manager. I might include it in the AmbientManager a bit like I did for

    and it would also include a part to manage the fog in Mission. I'm not sure when I will work on those but they are quite high in my priority list.
  14. A little update about TorqueLab development progress which have now entered the version 0.3 stage. There's no milestone plans really but I tought it deserved the promotion since it's getting quite stable and the major scripts cleanup is done. There's still some stuff to clean for sure but at least now I can start to work on little improvements and not worry about the system behind. In the last days, I have been working on Terrain Painter plugin enhancements since I'm experimenting with Terrain texturizing these days. I will make it short and you could watch the videos to have a better idea about the changes and improvements.


    Here's a quick list of the improvements and changes:

    Terrain Painter Layers Listing

    • Added parallax fields to the detailled view and created a new extended view which have a slider for parallax

    • Enhanced mixed view mode with auto collapsing unselected layers if set to ON and easy toggle between Detailled and Extended view

     

    Terrain Automated Painter (a.k.a. Procedural Painter)

    • Changed the generation scripting so it handle the layer generation by step allowing to keep track of progress

    • Updated the paint layers steps pre-generation report which was still a tough experimental UI

    • Added simple copy/paste system to share values between layer steps.(Simple button which copy value from Painter clipboard or paste it into.

    • Added simple system to get the average height of the current paint brush. (ALT will store the average into Painter clipboard (Not the standard ClipBoard))

    • Added 4 clipboard memory variable. (CTRL + (1,2,3,4) will copy current brush avg. height and SHIFT + (1,2,3,4) will paste it in current field)(Weird but usefull in some case)

     

    Terrain Material Manager

    • Fixed some issue which cause material to be overided with previous material

    • Reworked the Material Cloning system and use a Rollout in the material property area

    • Added system to detect if a Material is mapped to the TerrainMaterial diffuse, if so, it show the Material properties in an inspector inside a rollout so you can simply modify it without leaving the TerrainMaterial.

    • If no mapped material are found, you can create one for the active TerrainMaterial. The script will add the new material definition at start of the file containing the TerrainMaterial so it will always be loaded first.

     

    Okay, that's it for the quick resumé... I made a quick video for each of those updates. (I'm still experimenting with PowerDirector video editor, so I put a lot of times in those videos, next will be more simple with less texts informations so I can save time...)


    Terrain Painter Layers Listing Preview

    qjcy1DDiyeo


    Terrain Automated Painter Preview

    _nTRblQitJo


    Terrain Material Manager Preview

    QikHztAsPQo


    If you want to give it a try, the TorqueLab (development branch) Github repository have been updated and it should work for most setup. Integration have been simplified, simply delete the default tools folder and add the tools/ and tlab/ folder from TorqueLab repository.

    https://github.com/NordikLab/TorqueLab/tree/development

    Download TorqueLab Development branch ZIP


    You still need to apply the few code changes else it will crash because of the GuiSwatchButtonCtrl gridBitmap issue. You can pull those changes into your code from there: https://github.com/NordikLab/Torque3D/tree/TorqueLab-3.7 .

  15. A while back, I have decided to regroup some general functions together in a helpers folders, now I decided it's time to make a cleanup in that folder and make it organized. Once completed, I will share it with the community in case some would be interested by some of the functions. Some are coming straight from Torque3D but most are new and allow to replace repetitive scripting with a single function.

    Anyway, this is not the goal of this thread, I will post here some functions that I don't understand the need for. Maybe some of those are from old Torque3D versions (TGE and TGEA) and could be modified or removed.


    For example, I came across the setSafeValue function which is used in the AggregateControl class, I like that class once I figured out what it was but I'm not sure if the safe value system is still needed. Here's the function:

    function GuiControl::setValueSafe(%this, %val) {
    %cmd = %this.command;
    %alt = %this.altCommand;
    %this.command = "";
    %this.altCommand = "";
    %this.setValue(%val);
    %this.command = %cmd;
    %this.altCommand = %alt;
    }
    

    Is there a reason to do that with the command/altCommand? I have never experienced a problem where such safety would be needed, anyone have an idea why this function is used in AggregateControl. Someone think it's still needed?

  16. I made a new progress video about latest TorqueLab development. I have make a huge cleanup of the scripts and I have fix many issues to make it stable so I can start focusing on new features and real enhancements soon. I'm running out of time so I will let the video talk... I made it quickly just to share some of the latest progress but also the newly confirmed compatibility with UeberGame which will be use as a Demo for TorqueLab so anyone can give it a try with no effort...

    B76caNnZ_M0

    (Sorry for not knowing where to click...)

  17. Well since I'm lasy and don't like having to write extra Material, I made a TerrainMaterial fix function that check all TerrainMaterial in art/terrains folder. It create a new material file with a pre_ prefix containing all diffuseMap with missing Materials.


    Here's the initial version in case someone want to use it, it's a quick scripting job but it do the job and save time writing material. Also you can use the %reset to regenerate all the materials. The %loadNew var is for loading the new Material file instantly once created . For future updates, it will be included in my helpers collection.

    function fixTerrainMaterialsStock(%loadNew,%reset) {
    %searchFolder = "art/terrains/*materials.cs";
    
    //Now go through each files again to add a brush with latest items
    for(%matFile = findFirstFile(%searchFolder); %matFile !$= ""; %matFile = findNextFile(%searchFolder)) {
    	%fileObj = new FileObject();
    	// Open a text file, if it exists
    	%fileObj.OpenForRead(%matFile);
    	%folder = filePath(%matFile);
    	%fileBase = fileBase(%matFile);
    	%newMatFile = %folder@"/pre_"@%fileBase@".cs";
    	%fileWrite = "";
    
    	while( !%fileObj.isEOF() ) {
    		%line = %fileObj.readLine();
    
    		if (strFind(%line,"TerrainMaterial")) {
    			%inTerrainMaterial = true;
    		} else if(%inTerrainMaterial && strFind(%line,"diffuseMap")) {
    			%lineFields = strreplace(%line,"\"","\t");
    			%difMap = getField(%lineFields,getFieldCount(%lineFields)-2);
    			%difMapName = fileBase(%difMap);
    			%matObj = "Mat_"@%difMapName;
    			%matObj = strReplaceList(%matObj,"-" TAB "_" NL " " TAB "_");
    
    			if (isObject(%matObj) && %reset)
    				delObj(%matObj);
    
    			if (!isObject(%matObj)) {
    				if (!isObject(%fileWrite)) {
    					%fileWrite = new FileObject();
    					%fileWrite.OpenForWrite(%newMatFile);
    					%fileWrite.writeLine("//==============================================================================");
    					%fileWrite.writeLine("//Auto generated material for TerrainMaterial in:"@%fileBase@"");
    					%fileWrite.writeLine("//------------------------------------------------------------------------------");
    					%fileWrite.writeLine("//==============================================================================");
    					%fileWrite.writeLine("info(\"Loading generated materials for:"@%fileBase@"\");");
    				}
    
    				%fileWrite.writeLine("//==============================================================================");
    				%fileWrite.writeLine("singleton Material("@%matObj@")");
    				%fileWrite.writeLine("{");
    				%fileWrite.writeLine("	mapTo = \""@%difMapName@"\";");
    				%fileWrite.writeLine("	footstepSoundId = 0;");
    				%fileWrite.writeLine("	terrainMaterials = \"1\";");
    				%fileWrite.writeLine("	ShowDust = \"1\";");
    				%fileWrite.writeLine("	showFootprints = \"1\";");
    				%fileWrite.writeLine("	materialTag0 = \"Terrain\";");
    				%fileWrite.writeLine("	impactSoundId = 0;");
    				%fileWrite.writeLine("};");
    				%fileWrite.writeLine("//------------------------------------------------------------------------------");					
    			}
    		} else if (strFind(%line,"};")) {
    			%inTerrainMaterial = false;
    		}
    	}
    
    	if (isObject(%fileWrite)) {
    		%fileWrite.close();
    		%fileWrite.delete();
    		if (%loadNew) 
    			exec(%newMatFile);
    	}
    
    	%fileObj.close();
    	%fileObj.delete();
    }	
    }

    You could then simply paster the new material file before your terrain materials or to keep the pre_ material file, I have add a check for that file in the loadMaterials function, if the pre_ file is found, it will execute it before executing the standard material file.


    Just add this before the exec(%file) in loadMaterials()

    %folder = filePath(%file);
    %fileBase = fileBase(%file);
    %preMatFile = %folder@"/pre_"@%fileBase@".cs";
    if (isFile(%preMatFile))
    exec(%preMatFile);
    

  18. I'm trying to get a rid of the missing material warning for TerrainMaterial:

     [MaterialList::mapMaterials] Unable to find material for texture: [matName]

    After comparing with fullTemplate, I realized that all TerrainMaterial have a Material defined for the diffuseMap, what is it needed for? Just to get rid off the warning?


    I remember a while back I was making a Material for each of my TerrainMaterial but I lost this habit and I don't see a difference. I just want to know if I'm missing something, is there a use for the extra Material or it's just in case you need the TerrainMaterial as standard material?

    If it's not needed, anyone have a solution to get rid of the warning?

  19. Sound like a good idea, there's might be a lot of work to make it bulletproof but we would get there with 1 fix at a time :)

    Also thanks for logging it as an issue, it make my time lost not useless...

  20. hey Mud-H

    just wanted to conratz you to the work you doing here, well done and thx for your efforts!

    Thanks, that help me continuing to work on it instead of going back to work on my game. I really want to finish my work on TorqueLab because I have a past habit of not finishing my work...


    Now I'm having a little issue which is annoying me when I try TorqueLab on the stock FullTemplate with no changes. The game crash on exit because of a GuiProfile error when onDeleteNotify happen. It crash when function:GuiControl::setControlProfile( GuiControlProfile *prof ) is called and I get the AssertFatal: AssertFatal( prof, "GuiControl::setControlProfile: invalid profile" );.


    From what I understand onDeleteNotify is called on the GuiControls that are having the deleted profile set but should it happen when quitting the game? I will need to examine that deeper but I got enough with debugging my last error so I prefer to not worry about it for now. But maybe someone can provide me am explanation about why it's happening... Is there a way to disable the onDeleteNotify when the game is quitting?

×
×
  • Create New...