Jump to content

glowplug

Premium Member
  • Posts

    376
  • Joined

  • Last visited

Nexus Mods Profile

About glowplug

Profile Fields

  • Country
    Australia

Recent Profile Visitors

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

glowplug's Achievements

Proficient

Proficient (10/14)

  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

0

Reputation

  1. Obviously nobody could be bothered helping me improve this bow. Maybe I should just remove it from Nexus?!
  2. Thanks heaps for the help QQuix, I appreciate it. Rock rock your ship has great ideas with great reference material for me. I might give up on SLERP and just use LERP with more nodes to emulate it.
  3. Your scripts have advanced algorithms and number crunching - what I am trying to do is eliminate the numbers for modder independance. EDIT: the transformations between 0-1 of each node lerp to the scale of that node - the reason for the custom XMarkerScale. Using my custom XMarkerScale you can layout a number of them at varying angle/distance/scale to run the following script on whatever activator you want. FnGetTransorms will walk through all child objects and store them into a 3D Transform Array ready to drive the parent object at given duration along these nodes. An ideal fFPS of 24 will allow for older machines while quite smooth in rendering... scn ActiTravelPointsOnceScript ;WARNING: do not change this script int iInitialized ; set to 1 externally after setting fDuration and fFPS int iIndex0 int iIndex1 float fDuration ; time in seconds set externally float fFPS ; target frames per second set externally float fInterval float fIncrement float fTimer float fStartingScale array_var arrTransforms Begin GameMode if iInitialized == 2 let iInitialized := 3 let arrTransforms := call FnGetTransforms this endif if iInitialized == 1 let iInitialized := 2 let iIndex0 := 0 let iIndex1 := 1 let fInterval := 0 let fTimer := 0 ;___Allow for external interuption and reset. let fStartingScale := call FnMoveObjectToStart this, fStartingScale let fIncrement := call FnNormalizedIncrement fDuration, fFPS endif if iInitialized == 3 let fTimer += GetSecondsPassed if fTimer >= (1 / fFPS) let fTimer := 0 call FnLerpTransform this, arrTransforms, iIndex0, iIndex1, fInterval let fInterval += fIncrement if fInterval >= 1 let fInterval := 0 let iIndex0 += 1 let iIndex1 += 1 if iIndex1 == ar_Size arrTransforms[0] let iInitialized := 0 endif endif endif endif End The continuous loop version being... scn ActiLerpPointsScript ;WARNING: do not change this script ; See Course, Lerp Multiple Points int iInitialized ; set to 1 externally after setting fDuration and fFPS int iIndex0 int iIndex1 int iLoop ; 0 run once (default), 1 continuous loop float fDuration ; time in seconds set externally float fFPS ; target frames per second set externally float fInterval float fIncrement float fTimer float fStartingScale ref refEndParent array_var arrTransforms Begin GameMode if iInitialized == 2 let iInitialized := 3 let arrTransforms := call FnGetTransforms this endif if iInitialized == 1 let iInitialized := 2 let iIndex0 := 0 let iIndex1 := 1 let refEndParent := call FnGetLastParent this ;___Allow for external interuption and reset. let fStartingScale := call FnMoveObjectToStart this, fStartingScale call FnSetEnable refEndParent, 0 let fIncrement := call FnNormalizedIncrement fDuration, fFPS endif if iInitialized == 3 let fTimer += GetSecondsPassed call FnSetEnable refEndParent, 1 if fTimer >= (1 / fFPS) let fTimer := 0 call FnLerpTransform this, arrTransforms, iIndex0, iIndex1, fInterval call FnSetEnable refEndParent, 0 let fInterval += fIncrement if fInterval >= 1 let fInterval := 0 let iIndex0 += 1 let iIndex1 += 1 if iIndex1 == ar_Size arrTransforms[0] if iLoop == 0 ;___STOP LERP at end let iInitialized := -1 call FnSetEnable refEndParent, 1 else ;___LERP LastMarker to Start let iIndex1 := 0 endif elseif iIndex0 == ar_size arrTransforms[0] ;___LOOP LERP Start to FirstMarker let iIndex0 := 0 let iIndex1 := 1 endif endif endif endif End Using FnGetTransforms we need to parent all marker nodes as spaced for desired velocity in comparison to fDuration. For continuous loop, we can set the last child as the activator - unless I am mistaken as I wrote this some time ago. Adding followers is simply a case of 'Object.GetPos SetPos' statements, such as PlayerRef. My question, to answer your question, is how to improve on this by adding 'Spherical Linear Interpolation'.
  4. The short: Please break test Wendsemmar to give me ideas for it. Do you know how to write SLERP for CS/OBSE? The Long: Writing Linear Interpolation, LERP, in object oriented form for CS/OBSE scripting wasn't easy in terms of making the whole thing modular. Where I had planned to release it as a modder's resource I soon realised it would be difficult to explain. I've released all of the code in my mod Wendsemmar which puts it to use. The code base allows for a custom XMarkerScale that allows for OBSE scaling. As far as doing the same for Spherical Linear Interpolation SLERP, I found processing errors where I'm not sure what I did wrong and gave up. Again, if you have any ideas on how to improve the use of existing or extend it to do SLERP then I would greatly appreciate your input.
  5. Very wise RomanR, over a quarter of a century ago I told myself to never forget the learning curve - I'll remember this next time I post support code and so on.
  6. How about an inversion of logic such that 1 function can handle object enabling while getting rid of the main 'else'. Of course, you've provided a correct answer but how about that, how about the thinking? EDIT: Okay, I've suggested the opposite of what I would do here. The time period in terms of enable is boolean and should be evaluated as such; when enable period is met it should be done once and flagged as done; when disable period is met it should be done once and flagged as done. Using OBSE this would be 2 functions where it would be cleaner to nest the time conditional function as a parameter.
  7. Herewith 4K texturing, again, I can make this with much more detail but would really appreciate some ideas, rough sketches or example images, whatever.
  8. Hi Oupsiner. I just took a look and it seems like the latest download is an update. You need the one with 'Skyrim Style' to get the textures. Thanks for the compliment CHASE6, I appreciate it. The bow was before I did any modelling courses and isn't strictly modelled in quads. Odd tris can be a problem for certain animations, such as character but a bow has limited movement and should be okay. I still have the original working folder for this bow. The 1024x512 textures are mirrored left/right as well as top/bottom which, unlike ground texture tiling, we're not going to notice while firing it, resulting in much the work of a 2K texture. The detail model is over half a million polygons and could be baked off to a 4096x2048 resulting in much like the work of 8K... ...the thing is 'why go there' without adding a whole new level of detail. The game model has less than 2000 polygons which is nothing for a gaming machine at 5-8 years old. Model shape is enhanced by ambient occlusion baked into the diffuse. Feature lines are drawn on the diffuse as well as bumped into the normal. Increasing game mesh geometry to include feature lines would require more polygons than recommended for the Oblivion engine. Where I could use normal bumping to achieve this on Unreal, Oblivion won't cut the mustard. The solution is to re-invent Auriel's Bow with the original shape but new feature lines/shapes. The mesh needs enough polygons for enough shape to support normal bumping, around 10000-15000 polygons should do. This would include dents from fending off swords where 4096x4096 textures, to hide tiling(mirroring), would be optimal. So, what I need is concept art that bases feature lines off the overall shape of this weapon - the more input I can get from people the better.
  9. It is almost a decade since I remade Skyrim's Auriel's Bow for Oblivion - Armory of Auriel - easily searched on NexusMods, let alone Google. What's wrong with it, why don't you want it?
  10. Sorry to confuse things RomanR, having bicycled around 80km on the day of my previous post, I was a bit manic. I completely missed the GetDisabled, let alone overlooking it as the solution.
  11. The heading states "NPC's" which qualifies 1 NPC - the code would be on it. The grammar on the heading suggests a request for action on multiple NPCs - that code would have a somewhat different structure to the singularity. I provided object enabling code but various NPCs would have other requirements.
  12. The time period is either inclusive or exclusive - boolean. The requirement, per time period, is either achieved or not - boolean. Have I missed something here?
  13. scn EnableStuffOncePerGameHours int iEnabled Begin GameMode if 6 < GameHour && GameHour <= 18 && iEnabled == 0 let iEnabled := 1 ;enable stuff once in this time elseif (6 >= GameHour || GameHour > 18) && iEnabled == 1 let iEnabled := 0 ;disable stuff once in this time endif End
  14. Thanks Striker879, changing to 100 seems to have it on the move. They have low aggression so there can be enough to make the caves feel 'alive' without overwhelming the player.
  15. Having created a creature weighted to the slaughterfish skeleton I found it did not swim very far so I duplicated the aaaCreatureExteriorSwims1500 and aaaCreatureInteriorSwims512 packages to increase that. The next problem is it idling for far to long - Duration has a minimum of 1 minute. It's supposed to be a living thing that should stay on the move to avoid attack and forage for food. My thought is to put a number of packages on it then loop through them for EvaluatePackage. While OBS has a number of functions managing package data, nothing seems to have a SetActorPackage, let alone an ActivatePackage (more relaible than EvaluatePackage). Where there is AddScriptPackage and RemoveScriptPackage a process that gets these from an array, per creature, in a quest script should work but it's not very dynamic and certainly not challenging. What I want to do is write a generic script for certain creatures that loops their packages forcing them to run them at timed/random intervals. Any ideas greatly appreciated.
×
×
  • Create New...