Jump to content

ajs52698

Members
  • Posts

    140
  • Joined

  • Last visited

Nexus Mods Profile

About ajs52698

Profile Fields

  • Country
    United States
  • Favourite Game
    Fallout

ajs52698's Achievements

Collaborator

Collaborator (7/14)

  • First Post
  • Collaborator Rare
  • Conversation Starter
  • Week One Done
  • One Month Later

Recent Badges

0

Reputation

  1. That's alright, send me a private message! I'm curious! Please let us know once you get custom skeletons and behaviours to work ... A good tutoral about this would be nice! So that ALL modders who want to can have that knowledge, not just a hand full ... Based off ValenBae's comment, I assume he's made some progress on a tool to create these Havok file's using a custom built UI rather than through xml editing. Likely something similar to this https://github.com/BrannigansLaw/Skyrim-Behavior-Editor-. If it matter's, I haven't received any message from him, so i'm just guessing. This guide is meant to go through the needed information to create skeleton's file's for animation and behavior file's through xml editing and HKXpack. So you can make these file's currently without any tool with UI, you just have to beat your head against a wall a little more :tongue:. As a side note, once you understand how these file's work, it wouldn't be too difficult to create a UI editor tool IMO. I probably would be working on something like that right now, but my current project is a animation convertor, so that has to be finished first.
  2. That's alright, send me a private message! I'm curious!
  3. Feel free to point out anything that's confusing or lacking in the guide! Feedback is very useful.
  4. Hi MrPredatorCZ. It turned out to be an issue with HKXPack, Dexesttp has fixed it since. Thanks for trying to help.
  5. Yes the Wayback site confused me at first too. You have to click the URL and then click the dates. For instance with this link, you would select "August 22, 2016". Hope this helps! As for the Github link, your getting the raw code of the 2013 HAVOK system, so it's a bit harder to figure out and understand.
  6. Over the last couple of months, I've explored a lot of the functionality of HKX or Havok files. As a result of reflecting on what is known and what information is out there, I feel as though I'm obligated to TRY to share what I've learned. My hope is that this guide will inspire new ideas and generally help out the Fallout 4 modding community. Please leave a comment if : you find something confusing, are curious about something or don't understand something etc, if you have information and would like to add to this guide, If you find something that you know is wrong, if you found the guide useful. Feel free to also leave any suggestions or criticism. I don't usually try to write guides, so anything will be helpful, but please be constructive. Disclaimer : I am by no means an expert on animations or HAVOK. In fact, I'm still learning new thing's everyday. Please keep this in mind. Resources Used : I've found a couple of useful resources that shed some light on Havok. The thought didn't occur to me for longest time but this site is very useful! I don't believe this manual is complete, but there's still a lot of information here. https://web.archive.org/web/*/http://anarchy.cn/manual* I believe this is the 2013 version of HAVOK and this Github gives a lot of insight into the system. It is technically outdated for the fallout 4 Havok system, but a lot of the information remains very useful! https://github.com/Bewolf2/projectanarchy These are some notes from other modders. https://forums.nexusmods.com/index.php?/topic/3755680-bgs-custom-behavior-class-member-descriptions/ https://www.nexusmods.com/skyrim/articles/50508/? Tools used/needed : This tool by Dexestpp is incredibly useful, is invaluable and is required to edit and create HKX files without the offical havok tools. https://github.com/Dexesttp/hkxpack Preferably some text editor which has xml syntax checking functionality (make your life easier). I use Notepad++ which I downloaded a plugin for named XML Tools. Goals of this guide : Go over the base information of the HKX file's used in Fallout 4. Walk through manually creating a HKX file set. Show off certain unique aspects of Havok system. Explain how to use HAVOK's most basic animation type. Highlight useful information on the Havok system. Establish basic knowledge needed to explore HAVOK files. HKXPack Setup : This part of the guide will assume you're inexperienced with windows CMD or SHELL. To unpack and pack HKX files, we need HKXPack. This program takes the machine code (from what I understand) and converts it a xml format so that it can be read and edited. Dexestpp unfortunately never developed a UI for HKXPack. There is a UI included with ShadeAnimators animation kit, but I just use CMD or SHELL so I will go over those. When downloading HKXpack, hkxpack-cli.jar will be the file you're after. Note that java JRE 8 or higher is required to run HKXpack. Open up a CMD or SHELL. To unpack a HKX file, you have 2 options. Either set the current directory of your command line to the path of HKXPack or reference it's path when calling it. An example of a path : C:\Users\ajs52\Desktop\HKX_Examples\Baby\Animations Referencing the path : "hkxpack-cli.jar Path" unpack "HKX File to unpack path" For me this looks like this. C:\Users\ajs52\Desktop\hkxpack-cli.jar unpack "C:\Users\ajs52\Desktop\My_Skeleton.hkx" Changing Directory : CD "HKXPack Path (no file name)" For me : CD "C:\Users\ajs52\Desktop" By doing this you can call HKXPack without referencing the full path. For me : hkxpack-cli.jar unpack My_Skeleton.hkx To pack, simply replace "unpack" with "Pack" and make sure you reference a xml file rather than HKX file. C:\Users\ajs52\Desktop\hkxpack-cli.jar pack "C:\Users\ajs52\Desktop\My_Skeleton.xml" This will unpack a HKX file. The unpacked or packed file is created in the same directory as the HKX or XML file your unpacking/packing. You can change this. The how-to is on HKXPack's github. Be certain the file type is XML and not TXT when packing(applies to all unpacked/created files). To test unpacking/packing, using one of the methods above, paste the information contained in the spoiler below into a new xml file and pack it. If a new file with the extension HKX appears, you've packed file. Now delete the xml file and unpack the HKX file. A new xml should appear. You should now be able to unpack and pack HKX files at this point. Folder Setup : From what I can tell, only certain folders can be used if you want functioning HKX files for FO4. Some folders only work with specific object types, for instance actors (not 100% on this). I don't know of every folder, but I have learned of one that works for most if not all object types. Navigate to "Steam\steamapps\common\Fallout 4\Data\" and look for a your Meshes folder. If you can't find one, create one. Then look for a folder named GenericBehaviors. Once again create one if necessary. GenericBehaviors is a folder used for HKX Behavior's which are applied to many different objects. This will be the directory in which your created HKX files will exist. There may be others that work. The folders within GenericBehaviors and the files inside, I like to call HKX file sets. Every set of HKX files follows the same format. Folder (name whatever you want) : Folder named Animations. Only needed if you have HKX animations. Folder named Behaviors Folder named CharacterAssets. Only needed if you use your own skeleton. Folder named Character HKX Project File (My_Project.hkx for example). So for my current HKX project : Fallout 4\Data\Meshes\GenericBehaviors\ASMOD is my main folder name. (These are within ASMOD) Fallout 4\Data\Meshes\GenericBehaviors\ASMOD\Animations is my animation folder. Fallout 4\Data\Meshes\GenericBehaviors\ASMOD\Behaviors is my behavior folder. Fallout 4\Data\Meshes\GenericBehaviors\ASMOD\CharacterAssets is my skeleton folder. Fallout 4\Data\Meshes\GenericBehaviors\ASMOD\Character is my character folder. Fallout 4\Data\Meshes\GenericBehaviors\ASMOD\ASMOD.hkx is my project file. This for instance would be my HKX data for my first object. If I wanted another object to have its own HKX data, I would repeat the process. If you wanted to say, use animations from another HKX file set, you can. I haven't fully tested using other HKX file set data in a different set so you will have to play around with this. But it should work for animations. You can also use the same HKX data for different object's. Go ahead and create this file structure with a blank xml file in each of the subfolders and a one in the main folder(names don't matter for now). Basic XML HKX file knowledge : XML uses tags. For example : <hkobject> </hkobject> Tags can be anything. All elements must be closed off : </hkobject>. Elements can be nested. For HKX files your 2 most common tags are hkObject and hkParam. Elements can have attributes : <hkobject class="hkbVariableBindingSet" name="#6009" signature="0xe942f331"></hkobject>. This has a tag of hkobject and three attributes. Class, name and signature. Signature you can ignore. Most of the time you reference other elements by their "name" attribute. <hkparam name="variableBindingSet">#6009</hkparam> This references another object by its name which is #6009. Sometimes you reference data by its index. <hkparam name="eventId">1</hkparam> This references an event at index 1 of the event list. This is a comment <!-- hi -->. It will be ignored when packing the file. If any comment text is not within the comment syntax, you will not be able to pack. The XML Prolog in HKX files is "<?xml version="1.0" encoding="ASCII" standalone="no"?>". This cant have any lines or spaces behind it. Very useful site for more xml information. https://www.w3schools.com/xml/default.asp Creating the base HKX data : I highly suggest after you read this guide that you explore base game HKX files. There's a bunch of cool stuff I haven't even explored and you will learn a lot! Each HKX file set consists of 3 core files. A Behavior File, Character File and Project File. If needed there's also the Skeleton file and Animation files. Project File : This can be named whatever you like. This file doesn't do much in itself but is needed. Go ahead and paste the information contained within the spoiler into your project xml file. Don't close it as you need to edit some values. This is your first glimpse into what you will messing with. I found this kind of data scary at first, but I've learned to not mind it as much. Most of the values don't need to be changed here EXCEPT for characterFilenames. This value must have the name of the xml file you created in the character folder. So take some time to establish what your character file's name should be and replace MyCharacter with your xml file name. WorldUpWS established what is "Up" (this setting is available in a couple of places). From what project files I've seen, this is what they look like. Feel free to explore this file type. Once you've set the name, you can close the file. We won't be packing any of these HKX file's until were finished. Character File : I will be using the xml comment syntax here in between objects (<!-- -->). Paste this into your character xml file. Skeleton File : If you don't care about animations skip this. Paste this into your skeleton xml file. Behavior Files : This is where thing's get really interesting and confusing. Behavior file's do a hole slew of thing's but the really cool part is with the object's which can manipulate your animation's. This is also where the scale of the HKX file's gets big and a lot more complicated. Base Object's and Setup up a behavior file : This is the base information of all behavior file's that will generally exist. Notice how each, object except for hkRootLevelContainer, is referenced by another object. Go ahead and paste this into your behavior xml file. Make sure there's no spaces above the first line or below the last line. Common Information. : Up to this point, I've given you the entirety of the HKX information to paste into each file. But once you get to behavior graphs, you'll be spending a lot of time pasting and removing new object's. So to give you experience doing this, I've separated each object for you to manually place and edit. With the base information in place, now we will add some common elements of behavior files. These object's will be a part of the final behavior file your constructing. You should paste each of these object's into your xml behavior file. Don't worry about there location. Place them wherever it's least confusing. These base object's which we've already defined need to be adjusted when we want to create new variables and events. hkbVariableValueSet hkbBehaviorGraphStringData hkbBehaviorGraphData Defining Variables. Defining Events. Same routine as defining variables. I will define 1 event. Additional Information On Events: Defining these variables and events will be something that you will do often. VariableBindingSet. Conditions : If you've ever programmed, you know what this is. These simply allow you to "condition" things so that they only occur if the conditions are satisfied. StateMachine : Information on what a State Machine is . A state machine object establishes a "state machine". We can establish what state we start in, what transition's can be used by any state, the state's that we have and other things. StartStateId, wildcardTransitions and states are the three parameter's you'll be adjusting most of the time. Read about transition array's (little farther down) before this. Wild Card Transition's is a way to define transition's in which any state that's apart of the state machine can use. So If I had five state's and I wanted to be able to transition from any four of those state's to a fifth state, I could easily do so without defining multiple transition array objects's - by just using a single wildcard transitions. To create a wildcard transition, reference the transition array information below. Then adjust your state machine's wildcardTransitions value to the name attribute value of your transition array. Finally, change your transition array's flag parameter to the value "FLAG_IS_LOCAL_WILDCARD". Here's how this would look : We will be using the wildcard transition to transition back to the starting state ( our starting state ID is 0) from any state when we receive the event at index 0. States : Each of these object's represent a state. They must be reference by the state machine (coming up). enterNotifyEvents sends an events when the state is transitioned to. exitNotifyEvents sends an events when the state has been left. Transitions will reference a Transition array(up next). generator will reference a Clipgenerator, also up next. ID must be a unique number as this how the state if referenced. <!-- Paste two of these into your behavior file. Adjust there name attribute's, there name's and there ID's so they are unique. --> <hkobject class="hkbStateMachineStateInfo" name="#109" signature="0x39d76713"> <hkparam name="variableBindingSet">null</hkparam> <hkparam name="listeners" numelements="0"/> <hkparam name="enterNotifyEvents">null</hkparam> <hkparam name="exitNotifyEvents">null</hkparam> <hkparam name="transitions">null</hkparam> <hkparam name="generator">null</hkparam> <hkparam name="name">Put a unique name here</hkparam> <hkparam name="stateId">0</hkparam> <hkparam name="probability">1.0</hkparam> <hkparam name="enable">true</hkparam> </hkobject> Transition arrays. Transitions arrays are the logic which determines what state you will "transition" to. They are referenced by states under their "transitions" attribute. Statemachines also use them. At this point, using the guide above, your behavior file should look something like this. We've defined the base behavior file data. Created two state's. Defined two transition data array's (including wildcard). Defined a single variable and event. Defined a modifier with a variablebinding set and finally defined a single condition object. Now lets move on to adding our state's generators (one will have a modifier attached to it). Generator's are generally how you implement the functionality to play animation's, into you behavior file. The basic generator setup for Havok animations is created by using the ClipGenerator Object. This object will be referenced in the generator parameter of the state that will use it. I won't go over everything except the necessary parts. animationBindingIndex should be 65535. animationName must reference your animation folder and then the animation file name with the extension "hkt". We haven't created any animation's yet, but you should have a empty xml file in your animation folder if you desire to create animations. Reference it's file name here. This will run a HAVOK animation when the state which the generator is a child of is transitioned to. <hkobject class="hkbClipGenerator" name="#776" signature="0xd4cc9f6"> <hkparam name="variableBindingSet">null</hkparam> <hkparam name="userData">0</hkparam> <hkparam name="name">First Animation</hkparam> <hkparam name="animationBundleName"/> <hkparam name="animationName">Animations\My Animation Name.hkt</hkparam> <hkparam name="triggers">null</hkparam> <hkparam name="userPartitionMask">0</hkparam> <hkparam name="cropStartAmountLocalTime">0.0</hkparam> <hkparam name="cropEndAmountLocalTime">0.0</hkparam> <hkparam name="startTime">0.0</hkparam> <hkparam name="playbackSpeed">1.0</hkparam> <hkparam name="enforcedDuration">0.0</hkparam> <hkparam name="userControlledTimeFraction">0.0</hkparam> <hkparam name="animationBindingIndex">65535</hkparam> <hkparam name="mode">MODE_SINGLE_PLAY</hkparam> <hkparam name="flags">0</hkparam> </hkobject> Go ahead and paste two of this object into your behavior file. Make sure you change both of the Clipgenerator's name parameter's and the Clipgenerator's name's to something unique. To hook them up with the state, reference there name attribute's under the state's generator parameter like this : <hkobject class="hkbStateMachineStateInfo" name="#119" signature="0x39d76713"> <hkparam name="variableBindingSet">null</hkparam> <hkparam name="listeners" numelements="0"/> <hkparam name="enterNotifyEvents">null</hkparam> <hkparam name="exitNotifyEvents">null</hkparam> <hkparam name="transitions">null</hkparam> <hkparam name="generator">#776</hkparam> <!--Right here. --> <hkparam name="name">Second State</hkparam> <hkparam name="stateId">1</hkparam> <hkparam name="probability">1.0</hkparam> <hkparam name="enable">true</hkparam> </hkobject> Now lets setup that timer modifier we defined. Each generator can have as many modifiers as you desire. To use a modifier, you have to create a hkbModifierGenerator object. This is simply a wrapper object for your clip generator. Here's the object : <!-- Paste This. --> <hkobject class="hkbModifierGenerator" name="#121" signature="0xc499fc9e"> <hkparam name="variableBindingSet">null</hkparam> <hkparam name="userData">1</hkparam> <hkparam name="name">My Modifier Generator</hkparam> <hkparam name="modifier">null</hkparam> <hkparam name="generator">null</hkparam> </hkobject> So instead of referencing your clip generator's name attribute value in the state, reference this generator's name. Then under hkbModifierGenerator "generator" reference the clip generator's name attribute value. The modifier attribute of hkbModifierGenerator should then reference the timer modifier's name. For instance : And now we have to deal with Userdata. My understanding of Userdata is that it's a parameter in which the "user" can reference data which Havok will not touch or use (the next piece of information contradicts this) and could be used by a game engine etc... The annoying part of this is that certain HAVOK block type's need to have Userdata set to a certain value to function. Based off of what i've seen, my assumption is that bethesda uses userdata values as another way to enable/disable objects. So using 1 should generally work. The easiest way to figure out what the value should be is to unpack base game files and find a behavior file which uses the block class. So if you have everything working, but for some reason a modifier or other object isn't functioning, it's probably because of the user data value. Once your finished setting things up, your modifier will now "modify" the Clipgenerator using a single modifier. If it isn't obvious yet, some modifier's don't actually modify the animation. They simply do some kind of extra behavior along side the animation. Now on to multiple modifiers. This won't be apart of the example. To use multiple modifiers, you have to once again use another wrapper block. The process here is roughly the same as above. The previous hkbModifierGenerator's modifier parameter will reference this block's name rather than a specific modifier. Reference each modifier's name attribute in this object's "modifiers" attribute. When your done, you can now reference multiple modifiers instead of just one. <hkobject class="hkbModifierList" name="#8771" signature="0xded564c"> <hkparam name="variableBindingSet">null</hkparam> <hkparam name="userData">1</hkparam> <hkparam name="name">Multi Modifier Wrapper</hkparam> <hkparam name="enable">true</hkparam> <hkparam name="modifiers" numelements="0"> </hkparam> </hkobject> Now we have all the object's we need to create a functioning behavior graph, but not everything is setup. We still need to adjust the state's value's, define another event for our second state. Reference the transition array in one of our state's and finally, assign our condition to something. You should know how to define event's now. Go ahead and define another event. To reference a transition array, get the transition array's name attribute value and reference it in a state's (not your starting state) transitions parameter. If you haven't already, create a wildcard transition for your state machine. With the current object's you have, there's only one place you can reference a condition object, which is under your transition arrays. Pick one of the array's and reference it's name. For now, set the condition to something like "My first Defined Variable" >= 0. This is so it doesn't get in the way. Lastly, Our statemachine doesn't have any state's assigned to it. Find your state's name value's and add them under your hkbStateMachine's states parameter. Your behavior file should now be ready to go, but you still need animations! Here's the complete behavior file (I've reorganized to make things clearer): Animation Basics : For every frame of an animation, each bone of the object which is being animated is in a pose. A bone, when not animated or previously animated, is in an starting pose (these are defined in the skeleton file). A pose is simply the position, rotation and scale of the bone ( or nif node if that helps). Keyframes are defined poses. When you define keyframe's, your basically saying you want the bone to be at a position, rotation and scale at a certain time. During an animation, a portion of a bone's pose's are generated so that it appears to be moving towards the defined keyframe pose. As you can imagine, if your at a constant 60 frames a second and you had a 1 second duration animation with a single keyframe at the 1 second mark and you hadn't previously run an animation, 58 difference poses would be generated and 2 would be defined (starting pose and keyframe pose). Your frames aren't always constant of course, but I wont get into that. The process of generating poses is called tweening or inbetweening if that's clearer. When using modifier's that affect an animation, you are modifying specific bone pose's which could be poses that were inbetweened or keyframe poses (difference being one pose was generated and another was defined), based off of the modifier's parameters. Creating A simple Interleaved Havok animation : Before you look into this I'd like to suggest a suggestion. Bethesda themselves still used nif animation's in fallout 4. So I assume they felt that nif animation's are still useful, have a place and shouldn't be completely replaced by the HAVOK animation system. Try to keep this in mind when your considering how to animate objects. You'll find that creating nif animation's requires a lot less work than HAVOK animations (depending on the animation of course). There's also no need to setup a HKX file set just to create an animation if you animate in your nif. Now that we've got all of our hkx files done, you can go ahead and pack them. You'll likely find that you've made a mistake somewhere and can't get something to pack, so to help you out, I've packed all the examples to compare to your own. They will be attached to this forum post. If you still can't get something working, feel free to leave a comment with your HKX files attached and I'll try to help you figure out what's wrong. Attaching the HKX data to a nif : This next part assumes you have some Nifscope experience. To attach this information to your model, load up the mesh in Nifscope and create a object of type BSBehaviorGraphExtraData which can be found under the Bethesda category. Place it under your root node's Extra Data List. Then under the objects "Behavior Graph File" write "GenericBehaviors\"My Folder Name"\"My Project File Name".hkx". For my mesh this would be "GenericBehaviors\ASMOD\Simple_Single_Event.hkx". Be sure to also include a BSXFlags object in your nif with animated, complex and dynamic checked. I can't say what flags you truly need. But this is what a lot of base game nif's use. Now your ready to go! Load up your game, create your object which the HKX data is attached to. When the object first loads, you'll see the animation which you defined for your starting state generator play. By calling "PlayAnimation" using the appropriate event name, you can transition from your starting state to your other state and play that animation. Then try passing a variable to the behavior graph using SetAnimationVariableFloat to adjust the timer duration. If you get a error in your papyrus log for any of this, you've done something wrong. Now you should know that when you call "PlayAnimation", you are simply sending an event to the behavior graph. Extra Information : Gamebryo Generators : HAVOK basic animation blending : There's a lot that I did not cover so I'd like to post some shortcuts to Github information on generators, behaviors and other useful stuff. Behavior Information : https://github.com/Bewolf2/projectanarchy/tree/bec6e7270c9dc797a12d167d3e8942866065364e/Source/Behavior/Behavior Under previous link you can find the generators and modifiers available in the 2013 HAVOK system. you can also look into other things such as transition effects, conditions and statemachines. Keep in mind, this is from a older version of Havok, there's a good chance that a lot of this information is no longer true and definitely does not represent the features of the Havok system fallout 4 uses. Here's a list of modifiers and generator's used in the base game: Tips : I don't think I could close out this guide without giving a shoutout to Dexesttp. He's the creator of HKXPack and none of this would have been possible without his tool. Thank you Dexesttp. I'd also like to thank ChuckYufarley who helped me get over a slight bump when first learning how to create havok files. Thanks for reading my attempt at a guide, I hope I've at least helped you acquire the knowledge necessary to start exploring HKX files. At this point I'd like to dump my notes incase someone find's them useful. I've gone through and edited them so there coherent. I can't guarantee everything is true as these notes span many months. Some of the information might even contradict what was previously mentioned. So take them with a grain of salt.
  7. I've been exploring HAVOK animation types and feel as though for the most part, creating a tool to generate spline and predictive animations is not possible without certain critical information. BUT, from what I can gather, quantized animation types could be possible. But I have a problem, there are no animations that use this type in Skyrim or Fallout (the only games I have that I know use HAVOK). Luckily I did manage to find a copy of HAVOK filter tools which can (as far as I'm aware) export quantized animation. The problem is to export a quantized animation I believe I need a HKX scene file. If I could acquire a scene file and was able to make a create a tool to generate quantized animations, there's still one more issue. Will the creation kit be able to generate meta data for this animation type. I'm posting this here as a topic to generate a discussion on this idea and to find someone willing to lend me a scene data file. I am aware that this is a very am ambitious idea and has likely been tried by many, but I thought I'd also give it a shot. I haven't seem any news of any progress on a animation tool for years, so I my thinking is that trying cant hurt. For those interested in the compression animation types which I'm basing my assumptions on, here's a WaybackMachine "capture" of the HAVOK animation type guide information. https://web.archive.org/web/20160826062838/http://anarchy.cn/manual/12/havoksdk_programmersmanual/animationcompression.html Section 5.1.2 is where the critical information needed for spline compressed animations is mentioned and 5.3.4 is where needed information for predictive animations is mentioned. Thanks for reading. Edit : I believe I've misunderstood what scene data is. What I meant to ask for was a animation which was compressed using the quantization animation option so I can study it.
  8. Has anyone toyed with this animation type? I've been messing with it for the past couple of weeks but have hit a road block with translation. I'm only able to translate the object on 2 axis. Does anyone with animation knowledge have any idea why this would be? I can supply the hkx data if desired.
  9. I've been looking for ways to start an animation at a different point in it's track and my search has ultimately lead me to HKX files. One of the first things I played around with was the BGSGamebryoSequenceGenerator eUseTimePercentage value but am a little confused on its effect on the behavior of the animation. For instance, if you set eUseTimePercentage to USING_TIME_PERCENTAGE your animation will no longer play but it will move to whatever percent you define. This also occurs even if you set fTimePercent to 0.0 which effectively doesn't adjust the starting point of the animation. So my question is, is the intended effect of eUseTimePercentage meant to simply give the means to position an object based on the position it would be in if it had animated to a percent of its animation. Or am I using it incorrectly which is my guess simply based off the fact that enabling this option appears to completely break the animation. Any information and experiences would be appreciated! For those who wish to look into this functionality I can point you to two HKX files, BlendAlongSequenceVariable and AcidSoaker behaviors. Both use eUseTimePercentage.
  10. Yikes, I wish i knew this existed before I went through all radio mods and retrieved the same information lol.
  11. This doesn't seem to have been mentioned yet but I'd suggest looking into HKX events, you might be able to register for one of them.
  12. Here's a link to some BSLightingShader info, maybe it will prove useful. https://forums.nexusmods.com/index.php?/topic/1188259-bslightingshaderproperty-basics/
  13. I'm looking for some insight on accessing MCM through F4SE. What i'm trying to do is send information to MCM's shock wave file to set a value. For context, I found that MCM has a useful "dropdown" type which works great but does not have the ability to read data from papyrus into its options. I managed to find this post https://www.reddit.com/r/f4se/comments/ak9155/help_using_uiinvoke/ (thanks Scrivener07) which I have used to successful change "MessageBoxMenu" values, but I have had no luck with MCM. Using UI.Set, what path would you use for the "asPath" argument? Will the "asMenu" argument be "MCM"? Is this possible to do? Thanks for reading.
  14. Using the existing activation prompt system (perk entries with additional activation) is one way to allow for more varied behavior when interacting with objects. But it often creates headache's for authors because of conflicts. The system itself doesn't appear to be fully finished either. For example, one can have two or four activation prompts for an object, but three simply breaks the UI (based off my testing). In an effort to find an alternative way for the player to interact with object's that doesn't require F4SE, I explored using weapons with empty animation's to receive information when the player presses their left or right mouse buttons. Unfortunately, iv'e run into a couple snags. The first involves the equip animation. Based off my observations, for every equip weapon animation their exists a general camera motion or animation which always plays along with the weapon's animations. This assumption is based off testing an editing hkx equip animation with a very low duration. Even with this very low duration, there always exists a slight head bob before hand. Before I go any further, let me so that I am in no way an expert with animations and it's likely that my observations are wrong and that I simply misunderstood something, but that's one of the reasons why i'm posting this. To determine where this "headbob" came from, I explored the base "GunBehavior" HKX file but did not find anything note worthy. From watching the animation itself, it appears that the default "raise hand " animation begins to play, but promptly cuts out, likely because of the edited equip animation. My guess is that the slight delay before the cut off is because of a "hkbBlendingTransitionEffect" with a duration of 0.25 in the "GunBehavior" HKX file (Line 359 of the XML). Now as to why the animation itself plays, I have no idea. But as a result of this issue, an idea came to me. It could be that this "bob" is simply unavoidable, with an animation it isn't a huge deal but without one, it is. So why not add an animation? This is where I reach my limit as I don't have the tools to animation for Fallout 4. So my request simply is this. Create a simple 1st person equip and idle hand animation (one that doesn't look like your about to fight someone) which suggests the player is interacting with an object. I could then use this as the equip and idle animation for the weapon. I realize this is a large request and as I result am willing to send my esp with the working prototype to anyone who is interested. I don't wish to view this as a personal mod but rather as a community resource if it is achieved. Thanks for reading. As a side note, with F4SE, there is no need for this "workaround" as it allows for registering for input events, but when working with any idea, I always like the keep console players in mind. As a result, I try to find alternative's that work on console's, this being one of them.
×
×
  • Create New...