DocClox Posted April 9, 2020 Posted April 9, 2020 Now this is unexpected: See the way the tat has overwritten the clothing? Is that what you meant with the priority argument?
Invictusblade Posted April 9, 2020 Author Posted April 9, 2020 7 hours ago, DocClox said: Now this is unexpected: See the way the tat has overwritten the clothing? Is that what you meant with the priority argument? I think so, (because why would priority exist?) the problem is that most overlays are black (so you can't tell)
Invictusblade Posted April 12, 2020 Author Posted April 12, 2020 3 hours ago, Invictusblade said: so I am working on a new version of condoms using overlays but there is a slight issue(depending on your point of view) they are glow-in-the-dark (it does remind me of a scene in John Ritter's Skin Deep where there is a scene of complete darkness except for two guys wearing glowing condoms fighting over a woman (they were arrested for cock fighting)) so keep the glow-in-the-dark condom? (made with Radium) or continue to try for a more matte colour(no Glow, might not be possible) dp you have any ideas how to fix this (if it needs fixing)
murf Posted April 12, 2020 Posted April 12, 2020 I don't know if it will help but... for the glow issue here is maybe a hint. I bookmarked but haven't tested and same thread is more info on colors
murf Posted April 13, 2020 Posted April 13, 2020 8 hours ago, DocClox said: Interesting stuff. I had bookmarked, but can't find, a discussion about bgem v bgsm and the effects fo4 made to color spec and clear just by mat files having a different extension. I hate losing obscure tidbits of info like this. If you know of the discussion please point me to it.
DocClox Posted April 13, 2020 Posted April 13, 2020 Well, I got two colors in. This is using @Invictusblade's suggestion of applying a pink tat first, then black, then white. The white done doesn't seem to want to do anything, but there are probably settings that I've not tried yet. @murf: I also want to try the suggestion from the thread you linked about using one texture with different BGEM settings to do the different colors. Currently I'm using three textures to do one tattoo Not sure why the pink is so red, though. [edit] Never mind. Alpha Blend Mode was set to multiplicative rather than standard.
Invictusblade Posted April 13, 2020 Author Posted April 13, 2020 colours in an overlay is a tricky thing who knows how many times I played with materials today anyway, I managed to get them working in a playable state glowing overlays uses BGEM matte overlays uses BGSM
murf Posted April 13, 2020 Posted April 13, 2020 You two are doing great things here. I've wanted scripted face tints and overlays forever. Thanks for doing this publicly where folks can learn from it. I think the secret to using white overlays is in the cum textures used for AAF sex scenes. They so white they look bleached white.
DocClox Posted April 14, 2020 Posted April 14, 2020 12 hours ago, murf said: You two are doing great things here. I've wanted scripted face tints and overlays forever You're very welcome. Here's the code for my current tank top script Spoiler Scriptname rrs:tattoo extends ObjectReference ; ; By DocClox. Permission granted to use this script in other mods. ; import Overlays string property tat_id auto string property tat2_id auto string property tat3_id auto string[] property slave_names = None auto string[] property slave_brands = None auto ; ; save a little time adding name/brand pairs ; function add_brand(string name, string brand) slave_names.add(name) slave_brands.add("rrs_" + brand) endfunction ; ; set up the name and brand arrays ; ; why can't papyrus have array literals? ; function setup() ; ; we should only be called if the slave_names and slave_brands ; arrays are None. But it never hurts to double check ; if slave_names != None && slave_brands != None return endif ; ; go to the set up state so we don't get called from multuple concurrent threads ; gotostate("setting_up") ; ; two empty arrays for the storaage ; slave_names = new string[0] slave_brands = new string[0] ; ; now add the names. One argument is the actor name as in the CK ; the other, the overlay id corresponding ; add_brand("Ack-Ack", "ack_ack") add_brand("Bedlam", "bedlam") add_brand("Big Maude", "big_maude") add_brand("Bridget", "bridget") add_brand("Cait", "cait") add_brand("Chancer", "chancer") add_brand("Cinder", "cinder") add_brand("Clutch", "clutch") add_brand("Curie", "curie") add_brand("Darla", "darla") add_brand("Dixie", "dixie") add_brand("Gunner Commander", "gunner_commander") add_brand("Ivey", "ivey") add_brand("Kaylor", "kaylor") add_brand("Lizzie Wyeth", "lizzie") add_brand("Mags Black", "mags") add_brand("Nisha", "nisha") add_brand("Piper", "piper") add_brand("Red Tourette", "red_tourette") add_brand("Sparta", "sparta") add_brand("Tammy Mac", "tammy_mac") add_brand("Tessa", "tessa") add_brand("Whiplash", "whiplash") add_brand("Walter", "walter") ; ; come out of the state. There's an argument for staying in state ; but I'll re-enable it so that if we get the props reset for some reason ; we can always re-initialize ; gotostate("") endfunction ; ; same function in the setting_up state - ignore the action ; state setting_up function setup() ; do nothing - another thread is already doing it endfunction endstate ; ; this uses a Just Business script attached to Actor to get the "real" name of a slave ; need to do this since the display name is "Slave" by this point. ; ; if you're using something else to get your slaves, you'll need to make your own arrangements ; string function get_name(actor a) ; JB = Just Business - I think this will eval null if JB not installed JB:JBSlaveNPCScript slave = a as JB:JBSlaveNPCScript ; ; Just Business renames slaves to "slave", but stores the old name. ; We want to tat-match against the actors original name, so we need the stored value ; if slave != None && slave.pname != "" return slave.pname endif ; ; if that didn't work, there's a chance this isn't a slave ; (like maybe someome sent Piper to the stocks as a settler, maybe) ; ; so return the display name, and maybe we can match on that ; return a.GetDisplayName() endfunction string function get_brand(actor a) string name = get_name(a) if name == "" return "" ; probably not a slave or we can't find a name for her endif ; ; is the name in our lists? ; int idx = slave_names.Find(name) if idx < 0 return "" ; don't have a band for her - nothing to do endif ; ; return the id of the brand for this actor ; return slave_brands[idx] endfunction ; ; adds a tat. does nothing if the id is the empty string ; this means I can have single layer designs and three layer designs ; at the same time. If an id isn't set, it doesn't get applied ; function add_tat(actor a, string id) if id == "" return endif debug.notification("applying tattoo '" + id + "'") AddEntry(a, true, 1, id) endfunction Event OnEquipped(Actor a) if slave_names == None setup() endif ; ; add up to three layers of tats, if defined ; add_tat(a, tat_id) add_tat(a, tat2_id) add_tat(a, tat3_id) ; ; add a brand, if defined ; string brand = get_brand(a) add_tat(a, brand) ; ; update so the tats appear on the actor ; Update(a) EndEvent ; ; check an entry to see if it matches any of our tats ; and remove it if so ; ; I'd include this in the loop, but ; papyrus doesn't have a sodding continue statement either... ; function check_ent(actor a, entry ent, string brand) ; ; we only want to remove our own tats ; and none of them will have empty ids ; so if this exists, it's not ours and we won't mess with it ; if ent.template == "" return endif ; ; if the current entry matches any of our tats, delete it ; ; I'd check for emtpy string ids, but they're not going to match anyway ; if ent.template == tat_id overlays.remove(a, true, ent.uid) endif if ent.template == tat2_id overlays.remove(a, true, ent.uid) endif if ent.template == tat3_id overlays.remove(a, true, ent.uid) endif ; ; there's an argument for leaving the brand, once applied. ; but then I ought to check for it when applying ; and that seems like too much work right now. ; ; I'll think about it. ; if ent.template == brand overlays.remove(a, true, ent.uid) endif endfunction Event OnUnequipped(Actor a) Entry[] ents ; ; not sure why - following InvictusBlade's code here ; Utility.Wait(0.1) ; ; get a list of all overlay entries currently applied to this actor ; ents = Overlays.GetAll(a, true) ; ; get the name brand for this actor, if any ; string brand = get_brand(a) ; ; loop trough the entry list and remove anything that matches any of ours ; int i = ents.length while i > 0 i -= 1 entry ent = ents[i] check_ent(a, ent, brand) endwhile ; ; and again, update ; Overlays.Update(a) EndEvent That's using three property slots for tattoo ids, and they apply in order. So if you have single monochrome tat, just fill out one slot and it will work. And if you have three, they'll apply in order. The script works for any equipable item, so feel to use it if you want. It also has a list of boss name tat_id mappings so it can automatically brand named raiders like Ack-Ack and Clutch with their names on the other cheek. You can chop that out or repurpose it if you want. I'd have made it am array properties, but when I tried that, the values I set in zEdit didn't show up in-game for some reason. I might give that another shot in a bit. Meanwhile, here's our latest acquisition, demonstrating the name brand feature. 12 hours ago, murf said: Thanks for doing this publicly where folks can learn from it. No problem. I prefer working like this, to be honest.
DocClox Posted April 14, 2020 Posted April 14, 2020 On 4/13/2020 at 10:19 AM, Invictusblade said: glowing overlays uses BGEM Can confirm That should make it easier to find 'em in the dark. I can say it's all because of quantum nano. [edit] I wonder if that means I'd get better definition from BGSM files. The colors tend to overwhelm the text somewhat - that could be fizzing out from the glow effect, with me not noticing because I always make sure my screenies are well lit. Well. apart from this one, obviously...
DocClox Posted April 15, 2020 Posted April 15, 2020 Something that's kicking my ass at the moment: sometimes I can have a design look like this: And other times it looks like this: So far as I'm aware, that's without me changing anything about it. Anyone have any ideas why this might happen? I assume I'm doing something wrong, rather than the game engine just feeling cranky.
DocClox Posted April 15, 2020 Posted April 15, 2020 Think I can answer by own question here: mipmaps! I've been getting some distance to stop NPCs photobombing me, and then zooming in with tfc 1. So I think the texture I'm capturing is one intended for viewing from that distance away. If I go up close I get the results I'd expect. Pics here.
DocClox Posted April 16, 2020 Posted April 16, 2020 Here's interesting. Bear in mind that all my tats here are three colors,right? And the font and back tats are all the same texture? So how do I get this on the ass? And THIS on the mons: I figure it's got to the the blending mode. It occurs to me that if we got the blend right, we could probably do formal decomposition and draw any image we liked with RGB or maybe CYMK overlays... [edit] No, that doesn't make sense. It's the same texture and the same material, therefore the same blend mode. It has to be a different shade in the texture from front to back. [edit] And yet ... vs It is the same shade, dammit! [edit] So maybe it's overlaying another color? Turns out not that either. Here's the mons texture with all three layers composited: Here with the blue layer hidden: As you can see, there's no overlap to speak of. Similarly: and So there's nothing under the blue there.. The white does overprint it, but then that happens on the mons too with the "Punish Me?" line. The only real difference I can think of is that the ass is straight out of Inkscape in the first instance, and the mons I put into the Gimp afterwards to get the fussy blue glow around the "Punish Me?" line. I can't see how that changes the color in game though. Anyone have any ideas?
murf Posted May 16, 2020 Posted May 16, 2020 On 4/13/2020 at 10:49 PM, DocClox said: You're very welcome. Here's the code for my current tank top script Thanks for the code. Computer died twice in last month or so or I'd of spoke up sooner ?.
DocClox Posted May 18, 2020 Posted May 18, 2020 On 5/17/2020 at 12:26 AM, murf said: Thanks for the code. Computer died twice in last month or so or I'd of spoke up sooner ?. You're welcome. There'll be more recent versions in the latest RRS download. Feel free to use anything that looks useful.
murf Posted May 18, 2020 Posted May 18, 2020 1 hour ago, DocClox said: You're welcome. There'll be more recent versions in the latest RRS download. Feel free to use anything that looks useful. Thank you ever so much.
Recommended Posts
Archived
This topic is now archived and is closed to further replies.