[BETA/RELz/WIPz] NifSE v1.0

Post » Wed Mar 30, 2011 4:12 am

NifSE is an OBSE plug-in that allows Oblivion script to operate on Nif files during run-time. Nif files, or NetImmerse Format files, are 3D meshes which are used by Oblivion. These files have long been editable with 3D software and NifTools' excellent NifSkope utility, but certain operations on Nif files have been desirable for scripters and therefore impossible - until now.

More specifically, NifSE uses the NifTools' incredible "C++ library for loading, modifying, and exporting NIF files," NifLib, to create new functions through OBSE's plug-in API. Much thanks to both the OBSE and NifTools teams for their hard work that has made this possible.

For v1.0 we have a staggering number of new functions, plus an entirely new backbone system for storing, manipulating, and saving nif files. There is no more hard-drive bloat, as the nif files are only very briefly written to disk for Oblivion to read when it needs them, and deleted again as soon as it is finished. Nifs are saved in the .obse co-save file, and recreated as needed. The old functions are both now considered deprecated (as is the undocumented function NifGetBackShield, which was never supported in the first place), but backwards compatibility has been maintained, and the old functions have been somewhat updated to use the new system and therefore no longer clutter the user's harddrive.

Downloads
  • http://tesnexus.com/downloads/file.php?id=21292 (NifSE v1.0 b:6, b:6 example plugin)
  • http://code.google.com/p/nifse/ (NifSE v1.0 b:6, b:6 example plugin, source code)


Changelog (v1.0 β:6)
  • Added BSFurnitureMarker functions.
  • Fixed bug in NiAVObjectCopyCollisionObject.
  • Finally got CSE's documentation links to work.


Known Bugs (v1.0 β:6)
  • Beta 3 broke backwards-compatibility with functions that take arrays as arguments; these must now be compiled using OBSE v0020's compiler override. This means mods that were designed for beta 2 will not work, though only a little effort should be necessary to make them work. For this reason,
    The current version of Deadly Reflex 6 is incompatible with Beta 3 or later.


For Next Beta (already coded)
  • NONE. I'm instituting a content freeze; any additional betas will be only to fix bugs.


To Do List (roughly in order of when each is most likely to be implemented)
  • Future versions
    • Functions for working with collision blocks themselves.
    • Get/Set Vertex colors
    • Get/Set UV coordinates
    • Animations


Please post any ideas you have for the utility here!
User avatar
quinnnn
 
Posts: 3503
Joined: Sat Mar 03, 2007 1:11 pm

Post » Tue Mar 29, 2011 10:51 pm

Beta 2 has been released, fixing a bug with the nif-writing function that prevented it from correctly creating sub-folders for certain meshes created using the deprecated functions. Also added Set versions of the NiTexturingProperty functions (these haven't been documented yet).

Bug reports, suggestions, and ideas are welcome.
User avatar
Taylor Thompson
 
Posts: 3350
Joined: Fri Nov 16, 2007 5:19 am

Post » Wed Mar 30, 2011 10:32 am

Way to go man! :foodndrink:

I love Nifse and you know it! :)
User avatar
jadie kell
 
Posts: 3497
Joined: Sat Jul 29, 2006 3:54 pm

Post » Wed Mar 30, 2011 3:18 am

Hehe, yes I do. I hope you're doing ridiculous wonderful amazing things with it!
User avatar
Brad Johnson
 
Posts: 3361
Joined: Thu May 24, 2007 7:19 pm

Post » Tue Mar 29, 2011 11:32 pm

Updates: OK, one - there's a pretty major bug in this (that I am sort of disappointed no one else found because it's rather glaringly obvious) - if you save the game with changed Nif's and reload, the save information does not get retained, so when you save it the next time, those changes that were loaded are not saved again. This means that from then on, when you load the game, those changes will not be loaded, and the Nif will be wrong. This has been fixed on my end (was literally just a matter of remembering to store the loaded data so it'll be saved the next time).

Two, Scruggs implemented a work-around that allows plugins to accept array variables as arguments. Yay! The TEMP functions are going away; no point in having them now. I'll also be adding similar functions that I'd skipped due to the lack of this functionality (e.g. NiExtraDataSetArray), so that's good.

Three, Amorilia is awesome and has updated Niflib for me a bit, so NiNodeAddChild is coming, since it's now an actually reasonable thing for me to code. This is important because it's a step towards a true copy from one nif to another. She's also greatly improved the efficiency of the various type-checking functions (not that they were causing any significant slow-down before, as far as I can tell).

Four, I haven't released that update because of some technical issues that Scruggs has brought to my attention regarding changing the name of the project - basically, IsPluginInstalled does not, and cannot, know that NifSE is actually just NifScript. Furthermore, my workaround (as in the readme) is apparently a Really Bad Idea? from OBSE's perspective, so! my options are to either have the internal name remain NifScript (what Scruggsy would prefer I do), or to release a version of NifScript.dll that registers the NifScript name but does not register any functions at all, to be used alongside NifSE if you need to use mods that use IsPluginInstalled "NifScript". I prefer the latter course, personally. It honestly should not really come up - HeX_0ff tells me that he'll be pulling UV1 once UV2 gets going, and I'm pretty sure UV1 is the only mod out there that uses NifScript. That said, a choice has to be made, and I figured I should let everyone know.

Five, my harddrive died again. Yes, the one that replaced the one that died like two months ago. Infuriating, but I lost nothing because I've been backing up and it sort of died slowly so I can get everything off of it. I'm in the process of re-installing everything. Does anyone know of a place where the Windows Platform SDK from circa 2005 can be downloaded? Microsoft, apparently, no longer has the damn thing, unlike two months ago (though it was damn hard to find it then, I've looked where it used to be and Microsoft says it's been removed for being out of date). I've installed the latest Windows SDK, but I have absolutely no idea if it'll work with OBSE. I'd love to test that, but my Oblivion disk and/or my DVD drive is kind of messed up (this is not news, it was last time too), which means I have to put the disk in the other computer, copy the install files over to my computer, and run it off my harddrive instead of the DVD, and I haven't yet gotten around to doing that because it's a pain in the ass. I still have a ton of things to reinstall, like Office and Acrobat and Photoshop, but meh. For what it's worth, I went ahead and got the real version of Visual C++ for free off of Microsoft's "Dreamspark" thingamajiggy for college students, which is sort of awesome and exciting, because the Express Edition kind of svcks.
User avatar
Heather Kush
 
Posts: 3456
Joined: Tue Jun 05, 2007 10:05 pm

Post » Wed Mar 30, 2011 1:20 pm

Way to go man! :foodndrink:

I love Nifse and you know it! :)


Hmm...does that means that DR6 uses NifSE?

That can only mean one thing...the secret feature of DR6 are...
Spoiler
dismemberments!
:D
User avatar
laila hassan
 
Posts: 3476
Joined: Mon Oct 09, 2006 2:53 pm

Post » Wed Mar 30, 2011 12:24 am

Five, my harddrive died again. Yes, the one that replaced the one that died like two months ago. Infuriating, but I lost nothing because I've been backing up and it sort of died slowly so I can get everything off of it. I'm in the process of re-installing everything. Does anyone know of a place where the Windows Platform SDK from circa 2005 can be downloaded? Microsoft, apparently, no longer has the damn thing, unlike two months ago (though it was damn hard to find it then, I've looked where it used to be and Microsoft says it's been removed for being out of date). I've installed the latest Windows SDK, but I have absolutely no idea if it'll work with OBSE. I'd love to test that, but my Oblivion disk and/or my DVD drive is kind of messed up (this is not news, it was last time too), which means I have to put the disk in the other computer, copy the install files over to my computer, and run it off my harddrive instead of the DVD, and I haven't yet gotten around to doing that because it's a pain in the ass. I still have a ton of things to reinstall, like Office and Acrobat and Photoshop, but meh. For what it's worth, I went ahead and got the real version of Visual C++ for free off of Microsoft's "Dreamspark" thingamajiggy for college students, which is sort of awesome and exciting, because the Express Edition kind of svcks.

Update: The latest Windows SDK works without issue.

But I managed to pick up a virus (from Adobe Acrobat Reader? WTF?), and since it was a fresh computer install, I had no protection against it - and this svcker did an excellent job of preventing me from getting decent defenses after the fact. Even when I managed to circumvent its blocking of various AV/antispyware websites by downloading Malwarebytes from CNet, it killed Malwarebytes 2 seconds into the scan, and then permanently screwed up the installation. In Safe Mode.

So I wiped the new drive, again, and am re-reinstalling everything. Joy.
User avatar
Jade
 
Posts: 3520
Joined: Mon Jul 10, 2006 6:42 am

Post » Wed Mar 30, 2011 8:08 am

That's a bummer to hear. Really awesome stuff here.
User avatar
Gwen
 
Posts: 3367
Joined: Sun Apr 01, 2007 3:34 am

Post » Wed Mar 30, 2011 8:56 am

Mm. I've got... almost everything back up and running. Oblivion's one of the more obnoxious things to install because my DVD drive has seen better days, though.
User avatar
Kate Schofield
 
Posts: 3556
Joined: Mon Sep 18, 2006 11:58 am

Post » Wed Mar 30, 2011 12:12 am

Mm. I've got... almost everything back up and running. Oblivion's one of the more obnoxious things to install because my DVD drive has seen better days, though.



If you have the money you should set up a RAID 1.
User avatar
Kate Schofield
 
Posts: 3556
Joined: Mon Sep 18, 2006 11:58 am

Post » Wed Mar 30, 2011 4:20 am

I don't, so that's kind of moot.
User avatar
marie breen
 
Posts: 3388
Joined: Thu Aug 03, 2006 4:50 am

Post » Wed Mar 30, 2011 2:02 am

Greeting to everyone !
I want to ask for if possible for the date of the final release of the tool.
Thank you
Nikolay
User avatar
Emma Louise Adams
 
Posts: 3527
Joined: Wed Jun 28, 2006 4:15 pm

Post » Tue Mar 29, 2011 11:04 pm

Soon?

I've finally got my computer back up and running, so I'm writing a few new functions and updating a few others, and then it'll be another beta release. Also working on the dummy-NifScript.dll. Anyway, once the beta's out, I need to get testing feedback before I'll release it as a final release, but the beta's pretty stable/usable. Why? Got anything planned for it?
User avatar
Damned_Queen
 
Posts: 3425
Joined: Fri Apr 20, 2007 5:18 pm

Post » Wed Mar 30, 2011 9:29 am

Greetings,
Not me . A friends of mine is making mod with NifSE i dont know how actually , but he asked me to find information about NifSE . Anyway i want to thank you for your correct answer !
Bye
User avatar
Danial Zachery
 
Posts: 3451
Joined: Fri Aug 24, 2007 5:41 am

Post » Wed Mar 30, 2011 5:39 am

OK, so I should have an update to this in the next few days. Several functions that required array arguments have been added (just the Set versions of existing Gets, for now), as well as NiNodeAddChild. Also, a solution, of sorts, to the NifScript issue will be available, and the save/load/save bug currently in the mod is fixed. It may or may not contain some of the NiAlphaProperty, NiStencilProperty, or Collision functions that I plan on adding before v1.0 final is released.
User avatar
Lyndsey Bird
 
Posts: 3539
Joined: Sun Oct 22, 2006 2:57 am

Post » Wed Mar 30, 2011 1:40 am

Is there a way to disable the console spam? I have a hard time following my own debug messages when NifSE is doing something.
User avatar
NAtIVe GOddess
 
Posts: 3348
Joined: Tue Aug 15, 2006 6:46 am

Post » Wed Mar 30, 2011 3:16 am

Err... no, there's not. I can add one, though, I suppose.
User avatar
carley moss
 
Posts: 3331
Joined: Tue Jun 20, 2006 5:05 pm

Post » Wed Mar 30, 2011 7:48 am

I'd appreciate it, but don't put too much effort into it. I just have to remember to print my messages after all NifSE functions are finished. :)
User avatar
Shianne Donato
 
Posts: 3422
Joined: Sat Aug 11, 2007 5:55 am

Post » Wed Mar 30, 2011 4:23 am

It's pretty trivial, since I use a separate function to print - just need to add a condition to that function and some way of setting the value, and it'll be good to go.
User avatar
Marie Maillos
 
Posts: 3403
Joined: Wed Mar 21, 2007 4:39 pm

Post » Wed Mar 30, 2011 7:02 am

Can NifSE set a mesh's NiVertexColorProperty? If not, could you add that functionality?

Why would I want NiVertexColorProperty, you may ask? Simple: In Oblivion, hair color is handled via vertex coloring. Wigs (that is, hair that's not really hair, but actually equipment) can do things that real hair can't, such as animation, and skeletal rigging. If NifSE can set a mesh's NiVertexColorProperty, then OBSE can pick up the hair color of the character wearing the wig (this already exists, I checked), then copy the rgb settings over to the mesh's NiVertexColorProperty. Bam - you have a wig that is always the exact same color as your regular hair.
User avatar
Hairul Hafis
 
Posts: 3516
Joined: Mon Oct 29, 2007 12:22 am

Post » Wed Mar 30, 2011 4:51 am

Interesting. It cannot currently handle the NiVertexColorProperty, though that could be easily added. However, the NiVertexColorProperty only has two settings - the Lighting Mode, and the Vertex Mode. Neither houses an RGB value of any kind. So I don't think the NiVertexColorProperty does what you think it does. Vertex colors, as in the actual RGB values, are actually stored in the NiGeometryData-derived node (usually NiTriShapesData or NiTriStripsData). I can still probably give access to that, assuming that's what you want; it's in the same neighborhood as Breeze's UV map coordinates that he wants.

In other news, sorry for the delay on this; due to an "emergency" (I got banned at another board; suffice to say I disagree with the decision), a friend and I have been in the process of setting up a new forum, and he's relying on me for the technical details, so that's been taking up most of my time recently, because I want that up and running ASAP. That's very nearly done, and NifSE is absolutely my first priority once it is.
User avatar
Céline Rémy
 
Posts: 3443
Joined: Sat Apr 07, 2007 12:45 am

Post » Wed Mar 30, 2011 11:52 am

What does Lighting Mode and Vertex Mode do? Sorry if I sound like a noob, but anything that helps me make realistic-looking wigs, I'm all for. Anyways, yes, the RBG values is what I was looking for. I have some other questions regarding wigs, but I don't know if this is the right place for them.
User avatar
Alex Vincent
 
Posts: 3514
Joined: Thu Jun 28, 2007 9:31 pm

Post » Wed Mar 30, 2011 12:30 am

Here's the documentation:
  • http://niftools.sourceforge.net/doc/niflib/namespaceNiflib.html#ad5ad90cb2e9c18aca4e7afdff4f9ec10
  • http://niftools.sourceforge.net/doc/niflib/namespaceNiflib.html#ab1d3ba43fffd93aa44372b1329b0fa37

User avatar
jeremey wisor
 
Posts: 3458
Joined: Mon Oct 22, 2007 5:30 pm

Post » Wed Mar 30, 2011 1:28 am

I am so very tired of the way it "forgets" which topics you're subscribed to after like a week.

Anyway, due to a bug in v0019 with respect to arrays, the update to NifSE's basically useless until v0019a gets released. It's pretty much ready to go, though. It adds Set versions of the Get-some-kind-of-array functions, as well as NiNodeAddChild and NiTexturingProperty Add/Delete Texture. I'm going to start poking at some of the other things that have been requested.

EDIT: Alpha functions are done, need testing.
User avatar
Sophie Morrell
 
Posts: 3364
Joined: Sat Aug 12, 2006 11:13 am

Post » Wed Mar 30, 2011 3:50 am

I wonder if anyone realizes the significance of this: http://img.photobucket.com/albums/v238/DragoonWraith/Oblivion/NifSE/ScreenShot8.png
User avatar
Carys
 
Posts: 3369
Joined: Wed Aug 23, 2006 11:15 pm

Next

Return to IV - Oblivion