#Manually Remastering Assets

1 messages ยท Page 2 of 1

keen canopy
#

๐Ÿ˜ฎ

kind niche
#

Make sure it's only using the R/G channels though.

keen canopy
shut rampart
#

I'll take it

kind niche
#

I got Mike Wazoswski'd ๐Ÿ˜ญ

keen canopy
#

just for normal maps mate

shut rampart
trim trout
#

i can't find composer in the omniverse launcher, but i did find create. will this pose any issues?

#

like, is create outdated or is it just still called create in the launcher?

fair helm
#

USD Composer is the new name for the same program, but despite them telling me to use the new name everywhere, they still haven't actually migrated it on the launcher

kind niche
shut rampart
upper dock
#

Can I apply displacement or bump map and parallax map in RTX remix?

fair helm
# shut rampart So what am I doing wrong here?

you're editing the instance. Remix runtime does not read anything from instances.

You need to edit the asset, not the instance. In this case, you need to select the mesh_HASH prim that has a matching hash to the inst_HASH prim you're editing, and edit that instead

shut rampart
keen canopy
#

Same process with the lights burrito. copy the hash from the instance you have selected, paste the hash into the search bar in stager, scroll down until you find the mesh. Right click on that and create> xform, then click add> reference and go find your usda. Done, ez.

keen canopy
#

adding a mesh, forgot to show you the final result but it worked anyway ๐Ÿ™‚

#

Now, back to find some way to make working usda files with uv's

fair helm
#

huh, what happened to the wagon? I didn't see you delete the original, but it was still missing in game.

keen canopy
#

had to add the custom int preserveOriginalDrawCall = 1 bit that i do at the end

#

then pressed stop instead of pause ๐Ÿ˜›

fair helm
#

Also, just as general advice - it's best to place your new assets and textures in your mod folder, not inside the capture folder.

#

I noticed you were pulling your texture files out of the capture folder

keen canopy
#

oh yea I'll get moving that stuff over

keen canopy
#

I think i might have found the problem @fair helm . we're treating the import process to omniverse wrong. if you navigate to an FBX file in create and right click you get the options to convert to fbx.

#

opening that gets you this

#

i've tried every combination of exporting meshes and always end up with the primvar:st:indices bit. running your script gets me the messed up uv's from before but I feel I'm a little bit closer to working this out

fair helm
#

oh hey, that looks a lot better. no st:indices property

keen canopy
#

omniverse documentation ๐Ÿ˜› who would have thought

fair helm
#

I thought you were using file->import, which also gives options when you import something

keen canopy
#

I was and you get the primvar:st:indices bit every time

fair helm
#

huh, but convert to USD is giving you different options? how strange

fair helm
#

yah, those are the same options presented in the import menu... at least for me. I'm on a beta version of OV, so I may be seeing different stuff than you do ๐Ÿ˜ฆ

keen canopy
#

I'll keep playing with this ๐Ÿ™‚

#

seems like obj to usd gets me no st:indices where as fbx to usd gets me them. FBX does include loads more data than an obj

fair helm
#

promising. Have you tried using that mesh as a replacement?

#

or running it through the interpolation conversion script?

keen canopy
#

Yea running through the script unfortunately gets me messed up uv's again

#

Perhaps that's something to do with the conversation? You can't go from face vary to Vertex, maybe you need a middle step?

fair helm
#

we go from faceVertex to varying internally, but we also mess with the other indices at the same time. I thought USD had utilities to convert the primvar array at the same time, but I guess not ๐Ÿ˜ฆ

#

are you using the version of the script I sent that includes ComputeFlattened?

#

(if so, try the older version without that. If not, try that version)

keen canopy
#

Mostly the one from the pinned message. I'll give all three a go tomorrow and see where that gets me. Think I'll stick with the OBJ to USD conversion going forward as it's the closest to your working example file

dusk fulcrum
#

Hi @fair helm , was hoping you could shed some light..

i pulled a mesh from captures, put it in blender and subdivded mesh, it shows up corectly in omniverse, and i am using the correct procedure in game to use it as a replacement mesh, with original reference deleted- the game is using just this replacement mesh, but it shows up without any subdivision. Can remix not support this or there is another parameter missing etc?

dusk fulcrum
# dusk fulcrum Hi <@617500777191047168> , was hoping you could shed some light.. i pulled a me...

I also converted captured mesh to .obj when bringing it into blender first, because bringing it in as .usd consistently crashed blender when trying to perform subdivision.
So brought in as .obj then exported as .usd, that's the whole thing.

Oh also, this is being done on a character, I did consider that this might not be best mesh to test with. So perhaps that is why? (Wanted to smooth a jagged bald head)

fair helm
#

first, please ensure you're actually replacing the mesh - how are you sure that "the game is using just this replacement mesh"? best way is to assign a new material with a new texture or something. Make sure you're seeing changes.

#

second, please know that replacing skinned characters is very experimental and finicky - I would definitely recommend starting with a static prop and getting that working first.

#

start small and easy, and work towards more complex stuff once you know the basic stuff is working for you

#

also, when you say you subdivided it - did you bake that subdivision down to triangles? Remix only supports triangle meshes - no fancy subdivs, nurbs, or even quads.

dusk fulcrum
# fair helm second, please know that replacing skinned characters is very experimental and f...

Yes it's triangulated,

And I know its using that replacement because I have it as the only reference on a child of the original mesh_hash, with the original reference deleted for that hash, I have drawcall preserved=1

Also If I use replacement without triangulation then it disappears in game, but as expected when triangulation is on the replacement, then it appears which let's me know the replacement mesh is correctly targeted.

I guess applying to a skinned mesh is not a good idea...

Will try later on static object

fair helm
#

well, it disappearing when you have an invalid mesh is a good sign... but custom int preserveOriginalDrawCall = 1 means that the original draw call will still happen

#

I guess I'm not sure what you mean "does remix support subdivided meshes". If it's a valid triangle geometry, it doesn't matter how you generated those triangles

dusk fulcrum
dusk fulcrum
#

Alright well let me get back to you tomorrow

rare gull
#

i was working on a script that'd automatically (in batch) triangulate the meshes and run the script included in Mark's mesh remastering post. would that be beneficial?

dusk fulcrum
fair helm
#

What are you using to do the triangulation?

rare gull
#

i was just going to utilize blender's python library

rare gull
fair helm
#

The script is only needed if the incoming mesh has faceVarying interpolation

rare gull
fair helm
#

shouldn't

#

it's checking if the interpolation is faceVarying, then setting it to Vertex. I thought USD handled that automatically, but I may have been wrong (which is why I want to know if changing to the version that calls ComputeFlattened fixes things)

dusk fulcrum
#

I will try the script with Computeflattened, I know you mentioned triangulation mesh before using script, and I didn't do that with my mesh after subd in blender, because the mesh itself was pulled from the game by remix , I assumed didn't need to, I should read it/check it in usda format

upper dock
#

๐Ÿ˜ฑ

keen canopy
#

hey, i've ran the script with ComputeFlattened and i'm still getting the strange uv's

#

this is what it looks like in game. smoothing has changed as well

dusk fulcrum
#

@fair helm I found out today that the subdivided mesh was working as replacement mesh, but it was behind the camera, and as i had targeted player mesh, it was static in place, and i was just moving in front of it, so it did work lol

fair helm
dusk fulcrum
#

yeah its thre replacement, no its just static mesh

fair helm
#

(In theory replacement meshes can still receive the bone info from the original draw call in the latest runtimes... in practice it's really hard to set up)

dusk fulcrum
fair helm
#

I've spent the last few weeks working on it. It works, but it's very finicky right now, and the usd <-> fbx converters don't preserve joint index order when they do conversion (they strip unused bones), which causes some really funky errors

dusk fulcrum
#

is it the case then that the mesh being left in place is because it doesn't receive the bone info and therefore just doesn't update position?

Also what does 'strip unused bones' mean? Why are they not used?

keen canopy
#

ah got it
warn: Prim: /RootNode/meshes/mesh_530933B7D779FAC8/Xform/Stone_Guy_OBJ_Blender/Terracotter_Solider's position array length doesn't match normal array's, skip normal data.
warn: Prim: /RootNode/meshes/mesh_530933B7D779FAC8/Xform/Stone_Guy_OBJ_Blender/Terracotter_Solider's position array length doesn't match uv array's, skip uv data.

fair helm
# keen canopy here we go, not sure what i'm looking for in here
Unsupported image file format, please convert to DDS using Remix Export: d:/SteamLibrary/steamapps/common/Call of Duty 2/rtx-remix/captures/textures/Painted_Sign_03_Normal_O.tga

textures won't work - they're still tga

warn:  Prim: /RootNode/meshes/mesh_530933B7D779FAC8/Xform/Stone_Guy_OBJ_Blender/Terracotter_Solider's position array length doesn't match normal array's, skip normal data.
warn:  Prim: /RootNode/meshes/mesh_530933B7D779FAC8/Xform/Stone_Guy_OBJ_Blender/Terracotter_Solider's position array length doesn't match uv array's, skip uv data.

the normal and uv arrays don't match length with the vertex data array, so the computeFlattened is definitely not doing what we want it to

#

It probably works in the script I'm referencing because we also split every triangle out (so the faceVertexIndices array is just 1,2,3,4,...)

keen canopy
#

oh good catch with the targas

#

so how do i split every triangle out then? do i have the abilty to do that even?

fair helm
# dusk fulcrum is it the case then that the mesh being left in place is because it doesn't rece...

very possible.

So if the original game is doing skinning on the GPU, the captured mesh_HASH prim will have a skeleton and will be in the bind pose, while the inst_HASH prim will be positioned in whatever pose it was supposed to be in during capture. As long as a replacement mesh is bound to bones in exactly the same order and position as the captured mesh was, it will receive the animations at runtime.

If your character captures don't have skeletons attached, then the game is probably doing skinning on the CPU, which we can't do anything about.

re: unused bones: any bones which don't actually influence vertices (i.e. a bone between two other bones that do actually influence stuff) will be stripped out when doing fbx -> usd right now. I've got a ticket on the team that makes that converter to add an option to preserve the skeleton exactly as it is, but that'll take a long while to be implemented and make it out to a release build

fair helm
keen canopy
#

what do you mean when you say split every triangle out? like detach every triangle?

dusk fulcrum
fair helm
keen canopy
#

Oooh ok, yes that's easy enough. I'll give that a go later then ๐Ÿ™‚

fair helm
dusk fulcrum
#

well you will just have to retool it so i can play hitman the way i want then

#

obviously a joke, but just incase- yes that was a joke!

fair helm
#

Well... we do have ideas on how we could support vertex shader skinning and cpu skinning, but they're pretty pie in the sky for now. Doubt we'll put any time into those until we're stable and feature complete for purely fixed function games.

#

even then the ideas we have may not turn out to be feasible

dusk fulcrum
#

yup thats understandable, im still kinda surprised remix even got greenlit, but i get the impression its going to build momentum over a long timescale, and that in that time gpus capable of path tracing will be more commonplace in the market.

fair helm
#

Well, Nvidia was already funding a team of engineers to work full time on remastering old games to RTX, but we were just doing it one game at a time. When the idea for a tool that would let the modding community start producing full pathtracing mods was proposed and proven feasible, it was kinda a no brainer to pivot to that instead of remastering games one by one.

dusk fulcrum
#

yeah, i think i now know some of the games that were to be remastered and the knowledge somewhat pains me if it is indeed correct

kind niche
fair helm
#

Fundamentally, there's nothing Nvidia exclusive about the basic draw calls we're doing - it's all just the standard vulkan raytracing commands. Some of the technology we use like DLSS is Nvidia specific, but all of that is optional.

kind niche
#

AMD and Intel cards are still making full use of RTXDI and other technologies though, right?

fair helm
finite venture
#

I think reflex and DLSS are the only two Nvidia required technologies, but I could be wrong (maybe ReStir GI too??)

#

I think AMD uses radeon boost or whatever they call it

keen canopy
#

detaching all tri's in both 3d and uv's got me different results but same error

warn: Prim: /RootNode/meshes/mesh_530933B7D779FAC8/Xform/Stone_Guy_OBJ_Blender/Terracotter_Solider's position array length doesn't match normal array's, skip normal data.
warn: Prim: /RootNode/meshes/mesh_530933B7D779FAC8/Xform/Stone_Guy_OBJ_Blender/Terracotter_Solider's position array length doesn't match uv array's, skip uv data.

#

like this

fair helm
#

๐Ÿ˜ฆ

keen canopy
#

two little errors cant stop us

fair helm
#

You can look over the data (or use some python scripts to query the attributes) and figure out exactly how long each attribute is.

position array, normal array, and uv array should all have the same number of entries.

keen canopy
#

oh I cant write script ๐Ÿ˜ฆ

#

I just make the art

#

I'll see if kim or someone might help. these three need to have the same amount of entries right?

fair helm
#

yep. You should check how long those are before and after running the various scripts I sent over to have a better understand of what they are doing.

keen canopy
#

I'll switch to my test Nvidia cube, can just count them then can't I. I'm so lo-fi it's embarrassing lol.

fair helm
#

If you're counting manually - points and normals will have 3 numbers per entry (x,y,z coords), but primvars:st will only have 2 (u,v)

keen canopy
#

working on a plane everything equals 6

#

and yet

fair helm
#

hmm, your uvs are out of order. To simplify your points:

triangle 1 points: (++, --, -+), 
triangle 1 uvs:    (-+, --, ++)
#

oh, actually, your indices are not 0,1,2, above post is wrong.

#

here's youre data, re-ordered by triangle and reduces to just "is it positive or negative"

points: (--, -+, +-) (-+, ++, +-)
uvs:    (--, ++, --) (+-, -+, ++)
keen canopy
#

well thats fun, omniverse bug perhaps?

fair helm
#

I suspect the uv's are listed expecting indices of 0,1,2,3,4,5, but because the st:indices is set to None, they're using the indices from the faceVertexIndices, which are 1,2,3,4,0,5

keen canopy
#

this is obj to omni import as usda so until the script with the flattern in it is run it doesnt have an st:indices line

fair helm
#

huh, what does it look like without running my script?

keen canopy
fair helm
#

:/ yeah, so my script isn't changing the actual uv data at all, but swapping from faceVarying to vertex is making it apply the faceVertexIndices ordering, instead of applying the array to each triangle iteratively

#

I think computeFlattened only helps because we're also flatting the rest of the vertexData, so our indices array always becomes a simple 0,1,2,3,4...

snow lagoon
#

What are the reasons as to why the models are loaded using this non industry standard set up? Optimizations for RT?

keen canopy
#

I think it's your exporting a whole scene rather than just a single mesh, especially when you capture a scene as USD. USD supports all sorts of complex scene structures

fair helm
#

USD is built by Pixar and primarily targeted at working great when shared across tons of different authoring and rendering tools.
Remix is intended to be a small runtime library that loads quickly and runs on consumer grade hardware. Those design goals conflict pretty heavily.

We use USD as a format because those authoring tools can still open up and work directly on the data that the remix runtime can load, but at runtime our goal is to get the data from file to renderable data as quickly as possible.

So instead of doing all the data conditioning at runtime we precalculated it all in our tool. Without that, it could take a minute or more to load the Portal RTX assets, instead of just a few seconds.

We weren't anticipating having such a large gap of time between the release of the runtime and the tool, but artist feedback during the Portal RTX work made us realize that our initial approach (just modifying USD Composer) was never going to lead to the tool we wanted to build.

snow lagoon
#

Yeah I poked around with USD a few years back with unreal engine for a project, was interesting X)

That actually makes me question if Unreal could be used to edit the USD's for this hah

#

That's a very interesting read though Mark, cheers for sharing!

fair helm
#

anything that edits USD can be used for this, as long as the end result is compatible with the code that converts the USD to the renderable data at the runtime. src\dxvk\rtx_render\rtx_mod_usd.cpp is where that code lives, if you want to read over what we're doing

keen canopy
#

so looks like when i get my USD, however I do that, I need my faceVertexIndices to be in accending order

fair helm
#

Well, the runtime supports arbitrary indices arrays, you just need all of your primvars to be in the same order as the points array. right now your indices are only applying to the points array, the other arrays are in ascending order

keen canopy
#

I've ran out of ways to export these meshes. I've tried max, blender and even substance painter I'm stumped.

fair helm
#

there may not be any existing public tools that generate USD in the configuration we need it to be - we wrote our tool partially because our artists couldn't find a way to export the assets in ways we could actually use at runtime without a bunch of processing.

snow lagoon
#

Aah, so it's a bust until the tool is out?

fair helm
#

unless you or someone else wants to do some python scripting to fix up the vertex properties ๐Ÿ˜ฆ

snow lagoon
#

Sadly I'm just a lil' artist! I do some tech art stuff from time to time but proper scripting is beyond me I'm afraid!

fair helm
#

The best time to learn to program was 10 years ago. The next best time is today ๐Ÿ™‚

snow lagoon
#

Industry layoffs is currently preventing me from doing much other than looking for art work haha ^^

#

But you are right! I started visual scripting... sooo that's something X)

shut rampart
#

You know

#

Mark is right

#

I'll learn geometry nodes

snow lagoon
#

Learn how to set up some Octopus normals too, he'll love that.

shut rampart
#

Octopus

keen canopy
#

yea octapus normal are easy with chainner

#

awesome lil software that

#

if we can just get our USDA's into the correct formatting we'll be all set to replace meshes, it works already. so frustrating being this close but stuck

shut rampart
#

So

#

I was wondering

#

@fair helm

fair helm
#

please type the question before pinging me ๐Ÿ˜›

shut rampart
#

Can you tell if the remix toolkit will be able to convert the normal map

#

Or other textures

#

For example

#

I give the software PNG images

#

And it does the conversion for me

fair helm
#

yes. it will take in png files and output correctly compressed dds files

shut rampart
#

Oh good

#

That's a huge time saver

#

What about converting from tangent to octa

fair helm
#

it lets you specify what format your normal maps are in (openGL, directX, or octahedral) and handles everything from there

#

there's unfortunately no automatic way to know if normal maps are openGL or directX

shut rampart
#

Ah gotcha

#

That's good

#

The current workflow of using 75 different softwares for a single texture replacement is tiring

fair helm
#

Yeah, the idea is that you do mesh and material authoring in whatever program you want, then bring your pngs (or whatever) and usd/fbx files in to the remix tool, and the tool does everything required to make them ready for the runtime (or rejects them for relying on unsupported features)

#

it should be able to handle any texture format that nvtt can handle, which is pretty broad.

upper dock
#

I had textures, now materials

#

@fair helm

fair helm
#

have no idea what you're asking or trying to do

#

it's a materials folder?

upper dock
#

how to make replacement for material?

#

I have no textures

fair helm
#

I don't understand. Remix lets you replace a drawcall's texture with a PBR material.

#

If the drawcall doesn't have a texture, we don't currently have any way to change it

upper dock
#

I had folder named texture and materials , now i have only materials

#

Question "Why?"

fair helm
#

Remix doesn't delete folders.
when you take a USD capture, textures go into the captures/textures/ folder. Aperture MDLs and Material USD files go into the captures/materials/ folder.

upper dock
fair helm
#

If you take a capture and no captures/textures/ folder was created, then either the game crashed before capturing actually happened, or the game isn't using any textures that Remix can detect

upper dock
fair helm
#

Are you out of disc space?
What game is this, and has this game successfully captured textures before?

upper dock
#

135 GB Free

upper dock
fair helm
#

You'll probably need to create an issue with logs then. Sounds like some kind of compatibility issue

upper dock
#

hmm

#

I haven't any logs

fair helm
#

If Remix is running it will create logs

upper dock
#

๐Ÿคท

#

I haven't

fair helm
#

Check if the folder is marked as read only or something?

upper dock
#

no

fair helm
#

I'll mention CS Source to the guys working on compatibility to see if they've tested it, but we can't really do anything without a lot more information

upper dock
#

Maybe RAM mistake or VRAM mistake

upper dock
upper dock
fair helm
deep ice
#

@fair helm hey mark
How can I fix my USDA file failing to parse?

fair helm
deep ice
#

Again

#

Only happens in gmod

#

(Garry's mod)

fair helm
#

what exact error are you getting? and what build version are you on?

deep ice
fair helm
#

when you open that usda in Usd Composer, does anything print to the console?

deep ice
#

I literally just downloaded the latest builds off bridge and dxvk

deep ice
#

It's just gmod

fair helm
#

I believe that parsing error also happens when the file just can't be opened - maybe you have some strange file permissions or something?

#

have you verified that exact path is correct?

deep ice
#

The path is 100% correct

#

About the permissions im not sure

#

Ill have to check

fair helm
#

that error prints when we ask Pixar's USD library to open that path, so in theory the same code is called and should fail in the same way if you open that path in omniverse or in Pixar's USD Tools. Unless it's some strange user permission thing

deep ice
#

I mean
It should be working because it worked in other games

fair helm
#

If the content of the file is identical, then it's probably something with file permissions, folder permissions, or something unique to g-mod

deep ice
#

Nope
Not the permissions

deep ice
#

Imma try USD composer

fair helm
#

well, this really shouldn't be a per-game thing - the game shouldn't have any control over this.

deep ice
#

No errors in console

fair helm
#

clear the console, press the i button to turn on info logging, then reload the file?

#

it's strange though, I have no ideas why the runtime would fail to load something that OV is happy with, they should be using the exact same parsing code.

fair helm
# deep ice Nothing

I've got nothing ๐Ÿ˜ฆ Has anyone else working on gmod ran into similar problems? or succeeded?

Does a really simple mod.usda work?

deep ice
#

Both failed

#

And i literally tried portal rtx to make sure it was working

#

I made sure the entire folder of Garry's mod doesnt have any weird permissions stuff

fair helm
#

You could try using pixar's USD tools, or invoking their USD library directly from Python? that should more closely mimic what the runtime does.

Aside from that, I don't have any ideas ๐Ÿ˜ฆ you should probably file a github issue for it

upper dock
#

Pls anyone , make video for this

keen canopy
#

All credit to@rare gull and @flat ginkgo. pair of geniuses. I'll put together a tutorial with sound and everything once we sort out the kinks.

shut rampart
#

Amazing

keen canopy
#

less meme's more 20,000 poly grass.

deep ice
keen canopy
#

lol no it's 81,000 per clunk

#

to be fair it was just an experiment ๐Ÿ˜›

#

and my high poly grass for a bake i did earlier in the week

#

more polys in 1 lump than the whole american army in COD2

fair helm
keen canopy
#

I think so yea ๐Ÿ˜›

fair helm
#

How's the perf on those 81k poly grass chunks? In theory remix should be able to handle millions of triangles without much difficulty, especially if they're instanced

keen canopy
#

not bad honestly, just recording a video now. around 30 on quality dlss at 1080p but thats always like that ๐Ÿ™‚ feels good, looks good

fair helm
#

yeah, one of the big benefits of path tracing is that once you're over the initial performance hurdle, it scales to handle more geometry extremely well compared to rasterization

keen canopy
#

i'm pushing around 50 4096 textures into this poor lil game and it doesnt seem to care ๐Ÿ˜› memories never over 50%

#

might need to wait for youtube to encode if you wanna see it at full res

fair helm
#

well, texture memory is texture memory, path tracing doesn't make too much difference there as I understand it.

Simplifying things tremendously, for raw triangle count traditional rendering scales with O(n), while PT scales with O(logn). Which means that when you double the number of triangles, the time to rasterize it doubles, but the time to path trace it only increases by a constant amount.

keen canopy
#

pretty damn cool aint it, going to swap the modelled grass for alpha so i can use mipmaps to keep it thick at a distance and less aliasy

fair helm
#

(not sure if you're familiar with big O notation, but you can google that for more info)

#

ironically, you may get worse results with alpha compared to modeled ๐Ÿ˜› the chain link fences in Portal RTX are actually modeled for exactly that reason

#

if you do go for alpha, you probably want to figure out opacity micro maps. I won't be much help there though, unfortunately

shut rampart
#

So buildings with mesh interiors won't cause problems

fair helm
#

mesh interiors aren't just triangles though - adding more textures, lights, etc also has a cost.

flat ginkgo
fair helm
flat ginkgo
#

also culling. The game stores the original mesh's bbox extents to compute culling so, if your mesh is bigger than the original, there will be culling popping, at least afaik

fair helm
#

true that

shut rampart
fair helm
#

it's more that you have to light the interior, which means rays are bouncing around in there, looking for lights to collide with, etc.

#

a triangle with an emissive texture is basically the same as a light once you get to a certain part of the rendering pipeline

shut rampart
fair helm
#

I'm not sure.. but a light also wouldn't receive light, right?

shut rampart
#

Yes

fair helm
#

and weak emissives would still need to be lit by much stronger lights, or they would look pretty off

shut rampart
#

Right

flat ginkgo
#

Hey @fair helm , I'm thinking about the omniverse branch of blender, specifically about the exporter and that faceVarying thing.
The way I see, it is the biggest pain to create a nice pipeline to integrate 3d artists on rtx-remix modding, because now they have to know how to use python scritps just for that simple mesh conversion. If the tool itself could already export things in the right format, the artists could just export and proceed to open the mesh usd in OV, setup materials and stuff and have a more integrated workflow without worrying about underlying mechanisms.

So, I wonder if the folks developing the branch could just "add a simple button" (haha jk) / option to export the mesh in rtx-remix compatible way. The script logic to convert faceVarying to remix vertex interp is this one linked.
If it would be too difficult for now (for roamap and prioritization reasons), I'd gladly open an issue and make a PR to add this functionallity

fair helm
#

@rare gull please pin E-man's post above this.

We've been focused on making a standalone tool that both manages the captures, correctly creates the mod.usd, and converts assets from any DCC into Remix compatible data. We haven't really thought about or communicated with the people working on the USD tooling for Blender / Maya, since we didn't want to limit people to a single tool, and the deman for remix compatibility is small enough that I doubt those teams would prioritize doing the workthemselves.

Is there a github or something for the OV branch of blender you're talking about? I could see them accepting a PR that adds options like 'triangulage' and 'force vertex interpolation' to the export options, if so.

#

Ah, so modified_points = [points_arr[i] for i in indices.Get()] points.Set(modified_points) is what I was missing from the script I posted. Good find.

Regarding the usd / usda conversion... You can actually just change the file suffix when you save it in OV (and I expect also when you export from any other tool) to switch between usda and usd.

If you download Pixar's USD tools and get them running, you can also just do

usdcat foo.usd -o foo.usda
usdcat bar.usda -o bar.usd
#

I think it'd be better to simplify your script to just doing the interpolation conversion, and also post instructions of how to invoke it (do you need to run it in OV's script editor? just hte command line? what libraries need to be installed first? etc)

flat ginkgo
#

Right. So the script is more for reference on the logic (I could've posted just a pseudo-code for that purpose). The branch is what I don't know where it is, It is just mentioned in the Blender Omniverse presentation video and downloadable through OV launcher.

keen canopy
#

I'm not sure if you saw my message E-man but after running the script you still need to manually replace this texCoord2f[] primvars:UVMap with float2[] primvars:st

#

Kim got stuck on that this morning

#

you get this message in d3d9.log
info: [RTX-Compatibility-Info] Trying to bind a texture to a mesh without UVs. Was this intended?

flat ginkgo
#

I'm writting a USD exporter for blender "from scratch" using pxr + bpy libs, focusing on rtx-remix format, but it would be wonderful if it could be integrated as the options to the already implemented exporter, like you've mentioned:
I could see them accepting a PR that adds options like 'triangulage' and 'force vertex interpolation' to the export options

flat ginkgo
keen canopy
#

yep ๐Ÿ™‚

#

I know your techy as hell but if someone reads this later got a screenshot

fair helm
#

primvars:UVMap huh, that's a new name I haven't seen before for that property, but I can add it to the list of properties we check when we load UVs

keen canopy
#

looks like the name is the name of the uv channel cause I got "UVChannel_1" in my max based meshes and thats max's naming convention

fair helm
#

yeah, there's unfortunately no uniform standard for the UV primvar name as far as I can tell. Most programs use st or uv.

keen canopy
#

max is being different ๐Ÿ™‚ it's why they charge a million quid a year

fair helm
#

bleh... maybe I need to add code that searches for a primvar with the texCoord2f type if it can't find the expected property names...

flat ginkgo
#

I know the runtime is meant to load meshes as quickly as possible, but since the logic to convert faceVarying to vertex in this particular context is very simple, maybe that could be integrated in dxvk-remix directly ๐Ÿค”
What you think, Mark?

fair helm
#

You're doubling the amount of memory required, and accessing the memory in a non-coherent manner. doing this on a bunch of geometry data at runtime... well, I don't have perf numbers, but I expect it'd add considerable CPU load during content loading, which would probably have to be offloaded to another thread, and would delay loading replacement assets by a decent amount depending on how much geometry would need to be processed.

Considering that doing this conversion to all of the Portal RTX assets via python in OV was taking upwards of 30 minutes at one point... well in C++ without OV overhead we can make it faster, but it'd still be a very noticeable delay

#

scripts like this work well on one asset at a time, but when you start applying it to hundreds of high poly meshes, stuff adds up

#

(the 30 minutes is for the full conversion... including texture compression, I suppose. mesh processing is probably under 5 minutes of that, but it's still a lot)

#

Also, it's just really wasteful if a mod author ships content like that, cause then it's being re-converted by every user of the mod, every time they load the game.

flat ginkgo
#

Yeah that makes sense. I wasn't talking about using python anymore, ofc, but still from app design pov it would be better to author high performance assets at first place, not to mention array indexing/memory&cache hits perf issues as assets databases grow larger ๐Ÿค”

fair helm
#

even a few seconds of difference in load time can be very noticeable, since it makes the difference between all the assets being loaded before you manage to load into the game, vs the replacements popping in after you've already gotten into the game

flat ginkgo
#

Well so for now I think our best effort would be custom exporters, since I can't find the USD alpha branch repo for blender

#

Until the custom tool rolls out

fair helm
#

You might be better off aiming to just make a standalone script, it'll be a lot simpler. Export with a certain set of options, then run the script on it. That's essentially what the tool does, only it runs a bunch of different scripts

flat ginkgo
#

Right, makes sense, so that ppl working with other DCC could export and run the script. Think @rare gull is working on something like that already. I'll focus on trying something that can be run inside OV then

keen canopy
#

kim set me up with a folder, i pop my mesh in there, name it test.usda, run the script, get output.usda and I move it elsewhere, thats working well

fair helm
#

I think Kim was working with the USD api too, which means they should be able to just take the script you posted and adapt it to work with their tool

rare gull
rare gull
fair helm
#

well... adding a couple new names there is fine, if they're consistent coming from a major program. But if we're looking at arbitrary naming based on whatever people feel like using, we're going to need to alter that code to search for a primvar with type texCoord2f instead of searching by name.

#

and I'd rather do that sort of searching / renaming in an ingestion script/tool, instead of at load time

rare gull
rare gull
#

success!

keen canopy
#

see! one sleepy solider

#

from kim's script

fair helm
#

๐Ÿ˜„

keen canopy
#

just double checking with mark pls fix mesh ๐Ÿ™‚

deep ice
keen canopy
#

you aint seen my 80,000 tri grass? just displacement map it ๐Ÿ˜›

deep ice
#

Mhm
But i dont think you can change the map geometry

shut rampart
deep ice
rare gull
shut rampart
deep ice
#

I know about that

#

But i meant map brushes

#

I think cod is still on idtech 2 right?

#

Yeah that uses brushes

shut rampart
#

Well. Those brushes are baked out into geo, so you just replace that.

keen canopy
#

yea brushes are a pain but if we can fix the culling the brushes dont update and we can replace everything

#

for now i got a trick to lock them with r_lockpvs and flying outside the map with everything in sight, I can replace anything after that and its repeatable, scriptable even if your a smarty pants i bet

rare gull
rare gull
#

@fair helm this script is working near flawlessly from the tests tadpole and i did

however i'm running into an issue. due to the way the script works (opening a stage and exporting it as a new one), it's modifying the paths for things like diffuse textures like so:
original: uniform asset info:mdl:sourceAsset = @../captures/materials/AperturePBR_Opacity.mdl@

output: uniform asset info:mdl:sourceAsset = @c:/Users/Kim/Downloads/captures/materials/AperturePBR_Opacity.mdl@

do you know of a way to avoid this? i've had no luck working around it so far

fair helm
#

It's because you're using the Export() function. I suspect if you use stage.GetRootLayer().Save() it will just save in place without making the paths absolute.

#

Omniverse also has a Collect option from the file menu, which will create a copy of the current stage and all of its dependencies in the folder you specify, and make all the paths between them absolute. Useful when you want to create a bundle of assets to share.

rare gull
fair helm
#

hmm, I know there's a way to change the path of a layer before saving it, but I don't remember how. You may want to check the usdStage and sdfLayer docs

rare gull
#

alright, i worked around it

#

just copied the input as the output file name, and modified the copy in-place

fair helm
#

you can always just take an input name, use python file utilities to copy it to the output name, then open that, modify it, and save it

rare gull
#

that was my original solution. it just refused to work. i have no idea why, it's worked in my other scripts

#

spent about an hour debugging it with no progress

keen canopy
#

running it the same way we did with the previous script

rare gull
#

you saved the html page

keen canopy
#

lmao

#

kill me

rare gull
#

download the entire repo as a zip, then run the script

keen canopy
#

oh well look at that, i did ๐Ÿ˜›

#

gonna start setting up the process today and record either tonight or tomorrow ๐Ÿ™‚ so everyone can play

#

works a dream ๐Ÿ™‚ lovely

keen canopy
#

sky dome mesh attached to a tree ๐Ÿ™‚

#

the power!

#

if only direct light could shine through it @fair helm we'd have sun AND sky

shut rampart
keen canopy
#

is it? can you show me yours

shut rampart
keen canopy
#

isnt that the non replaceable sky omniverse adds?

shut rampart
#

Nope.

keen canopy
#

Hmm

shut rampart
#

You can figure out the mesh name in any other software, and then find it in the ov scene hierarchy to do your replacement.

#

That's what I theorised

keen canopy
deep ice
#

Wait

#

Umm
Im not sure if replaced materials appear in gamesetup

keen canopy
#

wheres game setup?

rare gull
#

he's talking about the in-game Remix menu i think

#

there's an "ignore lights" toggle for textures

#

however i don't think that'll fix this issue

keen canopy
#

oh i see, lets try it

#

nah no good, you can ignore texture on the original mesh and it goes away but ignore light doesnt do anything

#

good shout though

shrewd hedge
#

How do I create a new material for a mesh that doesnt have one assigned?

fair helm
shrewd hedge
#

It's just not showing up for some reason, the terrain is split into tiles but no texture shows up at all

fair helm
shrewd hedge
#

Is there any way to get around that, or no?

fair helm
#

generally no, although you could try playing around with the terrain baker and texture assignments, or with replacing the entire ground mesh with a new mesh / material. You should take a USD capture and see what the ground looks like in that

shrewd hedge
#

That's what I was hoping to achieve, manually assigning a material to the mesh tiles that make up the terrain

shrewd hedge
#

OMG

#

Fixed it

#

Simply turned down the game terrain settings in the ini file for goodness sake

shut rampart
#

It is always suggested to try games at the lowest graphics settings

shrewd hedge
#

I did try messing with the settings but completely overlooked that option, which is a pretty obvious option to mess with considering the issue I was having ๐Ÿ˜†

shrewd hedge
#

How do I fix a capture importing upside dowN?

keen canopy
#

ask an aussie to capture for you

#

or

#

set Z up ๐Ÿ˜‰

shrewd hedge
#

Where?

keen canopy
#

one set booting

shrewd hedge
#

oh ye I've already done that

keen canopy
#

or dont set z up, do whatever isnt upside down

shrewd hedge
#

neither works

keen canopy
#

you captured that fast

shrewd hedge
#

I've already tried it

keen canopy
#

oh my suggestion doesnt work in theory

#

try this as well

shrewd hedge
#

nah nothing is doing it

keen canopy
#

maybe this might help?
#general-remix message

shrewd hedge
#

oh, maybe If I use one of the games other camera's then

flat ginkgo
#

Each game will have a combination of Z up or down with Left or Right Handed. Those both options are important to find the scend orientation. Only captures generated with these settings applied will be right. The ones you already captured will still be wrong

shrewd hedge
#

ye I know that, it's just fucked

#

I've noticed people mentioning tools and scripts to make workflow easier but can't actually find any links to them

#

oh nvm lol

#

actually

#

it's still hard to find what tool to use and the links

fair helm
#

each tool has its own channel. check the pinned comments

shrewd hedge
#

Yeah but I don't know what tools to use and the links are hard to find in those channels

rare gull
#

the tool is pinned in each channel

#

just read the descriptions for each one and determine what you need

#

i summarize them at the top comment (which is pinned)

shrewd hedge
#

Sorry it's just a bit overwhelming starting from scratch

#

I'm not quite sure what I would actually need just for upscaling and converting to PBR

#

I've got chainner but I don't know exactly what to do with it

rare gull
#

yeah, that's a bit messy unfortunately. there's a few chains that people have shared for it, but they each have issues

#

@kind niche has a great one that he shared with me, but i don't know if he's okay with me distributing it. you should wait for his response

#

it would be good to have a dedicated one to direct people to

kind niche
#

If it's any of the preset CHN files, go for it.

rare gull
#

@shrewd hedge #1129194028315988098 message

#

not ideal, but it'll hopefully work well enough for you

shrewd hedge
#

Weirdly now JPOG doesnt start anymore

#

even with a fresh install fresh remix files

#

makes no sense

kind niche
#

I had this happen with Hitman Codename 47, can you see if there's any mention of the dxso code in the dmp files being created (.trex folder)?

#

Watbulb did a deep analysis ages ago of a bridge crash caused by a race condition affecting a whole bunch of games that use shader models higher than SM1.1, and because it's a race condition my theory is that it may be able to process the first few shader compilation attempts then will fail out once older compiled shaders are cached. But I can't really speak as to how accurate that is, I'm still strongly in script kiddie territory when it gomes to my SL knowledge.

shrewd hedge
#

It doesn't even attempt to start I get an error from JPOG failed to find display, Which I've had before but usually running it's included setup exe fixes that, either way works fine vanilla though It makes absolutely no sense at all it's hurting my brain

#

Is there something stored else where in the system?

#

last thing I used was PBROven, that store anything anywhere that could be doing it?

kind niche
shrewd hedge
#

Yeah didn't think so, just makes no sense

shrewd hedge
#

I think I found the issue

kind niche
#

That would do it.

shrewd hedge
#

But I disabled it because one thing I knew that happened was a definition update, I dunno. ssuch a terrible AV

#

I probably didn't disable it all

#

What's a good AV that doesn't mess with remix?

kind niche
#

Honestly I'd recommend just going into your settings and reversing the action.

#

It'll eventually leave you alone.

#

This isn't an issue with official RTX Remix releases, but the actions aren't digitally signed and Remix by its very nature is a very suspicious looking program in the eyes of most AV.

shrewd hedge
#

It's not even letting me do anything, just a Learn more option. So annoyed right now

#

Just added the folder to exclusion, problem solved

#

That's Windows for you, update something and it messes you up

rare gull
#

@fair helm for now i've pinned a link to the script i have on github. if possible, it'd be great if it could be added directly into your tutorial (right now it says no one has it working)

keen canopy
#

I'll record a video tutorial tomorrow kim, got the day off work

floral swallow
#

Looking forward to that! I can get the asset ingested with transferred normals, but no texture maps working.

keen canopy
#

I've tried recording but my jaw is killing me, gonna have to do it another day i think guys

tight oriole
#

Is there anything in here about remastering textures?

flat ginkgo
#

Hey @fair helm , think I've got a bug on how the runtime assigns materials to meshes when they're added as referenced to prims in the USD file.
The problem: We can't define the mesh materials outside the mesh.usd file, because if two or more totally different meshes references their materials.usda files, somehow the material of the first loaded one endup being applied to all of the mesh replacements.

I have setup many many different configurations of USD files and references and ended up with a very simple example steps to demonstrate the issue. Picture this:

  • mesh_01.usd: exported directly from blender and untouched (except by those python scripts to fix the interpolation issue)
  • mesh_01_assembler.usda: parent file I'm using to add the mesh as a reference, define a material inside the mesh and assign it to the mesh prim
  • mesh_02.usd: another mesh exported directly from blender
  • mesh_02_assembler.usda: same as 01, but for mesh_02.
  • mod.usda: The one that actually performs the replacements in the mesh_HASH -> new Xform > Add mesh_0x_assembler.usda as reference

If I only perform the replacement with the mesh_01, it works perfectly, but the moment I add mesh_02, it ends up using mesh_01's materials

Check the pillars (mesh_02) using the wall's (mesh_01) materials in the pic:

fair helm
# flat ginkgo Hey <@617500777191047168> , think I've got a bug on how the runtime assigns mate...

I'm a little unclear as to how exactly you're setting this up, but I suspect I know what's going on, an easy test, and an easy fix.

First, you should understand that references and layers in USD are all flattened out before the runtime reads anything. As easy way to duplicate that is to flatten your USDA. (I think you can do that with either save as flattened or export in OV, I don't remember precisely what it's called). You can then open that flattened USD and see what the runtime will see.

Likely what is happening is that both mesh_0X_assembler.usda files have the material defined in the same prim path - something like /RootNode/materials/mat. When you add both of those as references to mesh_HASH/child, both of those references are trying to create a single mesh_HASH/child/materials/mat prim, and whichever reference is stronger is overriding the weaker one.

The simple fix is to just bring your references in to separate children (i.e. mesh_HASH/child1 and mesh_HASH/child2). This will prevent any conflicts between the two references.

flat ginkgo
fair helm
#

ah, they are two completely separate mesh_HASH prims, with separate references, and differently named materials... that's almost certainly a bug then...

flat ginkgo
fair helm
#

where's your mod.usda?

flat ginkgo
# fair helm where's your mod.usda?

I'm at gameReadyAssets\03_meshes\01_props\01_roadways, so mod.usda has a reference: @./03_meshes/01_props/01_roadways/030101_roadways.usda@

#

May I compile all that stuff and open an issue at remix repo?

fair helm
#

ah, that's a lot of sublayers. might be worth dragging this up to the top just to make sure none of the other sublayers are messing it up

fair helm
flat ginkgo
#

Yeah I was just checking if it makes sense haha. I'll do it later ๐Ÿ‘

fair helm
#

The way you have all your references and stuff set up is pretty confusing to me, I'm not sure why you have all these separate files

flat ginkgo
#

That fix would add a bit of a help to the workflow, since having the materials defined outside the mesh.usd file allows us to export the reworked mesh as many times without having to recreate and reassign the texture materials every time in OV

flat ginkgo
fair helm
#

ah, your mesh pipeline blows away the material?

flat ginkgo
fair helm
#

hrm, actually.. how did you generate your dds files?

flat ginkgo
#

It supposedly handles MDL materials import/export nicely, so maybe I should focus on learning a bit of those features in blender side ๐Ÿค”

fair helm
#

cause visual studio can't even open them, which bodes ill about Remix being able to open them

flat ginkgo
fair helm
#

ah, nvm, it was cause I hadn't unzipped them

#

hmm, looking at your original picture - is the bug that the pillar is using the same material as the wall, or that the pillar has a bad UV map?

#

it does look more like it's using th wrong texture, the pillar_albedo doesn't have that mortared bit

#

Does it look correct in Kit?

flat ginkgo
# fair helm Does it look correct in Kit?

yes it does, and to confirm, I remove any mesh_01 materials references from the usd hierarchy and the pillar loads beautifully, so it confirms the mesh is fine ๐Ÿค”

fair helm
#

Hmm, I'm aware of at least one bug in the way we hash materials at load time in the runtime, where two materials that start from the same reference wind up being considered identical. I don't think that would apply here, but there may be another bug in that system

#

If you're going to submit this as a bug, it'd be useful if you could make a really simple mod.usda file that reproduces this behavior without all your other changes.

flat ginkgo
#

Sure, I'll work on it asap

fair helm
tight oriole
#

Mark to the rescue

tight oriole
#

Does anybody know why Creates built in materials don't appear ingame?

#

I'm using Remix with Half Life 1 (its half life 1's files in Portal Prelude) and I can get emission to appear ingame, but the materials built into create don't show up

#

they look fine inside of Create though

elder rampart
#

u have to replace the original textures

tight oriole
#

it shows up in create

#

how do I replace the orginal?

elder rampart
#

gime a second

tight oriole
#

ok

elder rampart
#

u know how to setup ur mod.usda?

tight oriole
#

its already setup yah

#

thats how I got the emission stuff to work

#

I didnt even have to leave the game to see the change

elder rampart
#

?

tight oriole
#

?

elder rampart
#

1 click any mesh
2 click in that sphere
3 click o the folder
4 select any texture
5 save
6 open the game

#

the texture must be .dds

#

my mod.usda died but it must work

#

and must be bc7

tight oriole
#

like I said, they load up just fine inside of create itself, but just not ingame

elder rampart
#

sadly u must use the original material

tight oriole
#

but then.. how do people add in new textures? because i've definitely seen them do it

tight oriole
#

??

#

I already saw that

#

that doesn't help me

elder rampart
#

this is how new textures are added

tight oriole
#

its not my texture though, its a built in material

#

and idk where the materials are stored

#

it leads me to a folder that doesn't exist

elder rampart
#

when you click on any model this screen will appear on the right hand side

tight oriole
#

why are you talking me through the process again? I can understand what you've told me

#

but it doesn't help me

elder rampart
#

what do you want to do?

#

I think I misunderstood

tight oriole
#

...

tight oriole
#

Create has built in materials

#

I want to use these ingame

elder rampart
#

u you have to edit the original game material from create, you can't use one of the pre-made ones.

tight oriole
#

they appear on the models when I apply them, just not ingame

elder rampart
#

u cant replace the original materials

tight oriole
#

people have replaced the original materials tho

#

in other games

#

like Need for Speed

elder rampart
#

no, they dont replace the original materials
they replace the original textures
like normals, roughness maps etc

kind niche
#

The only materials that work are the Aperture PBR mats. You can take a look at Portal and Prelude RTX for examples.

keen canopy
#

Jesus Alex stop arguing. We don't swap materials we replace the textures in the captured material as tutertx said in the first place.

#

Create isn't remix, some things work but most don't including all built-in materials

keen canopy
heady timber
#

can anybody help with a error i keep getting or is there some where else i should ask at

elder rampart
#

which error mate

heady timber
#

2023-07-25 05:43:24 [Warning] [omni.hydra] Parameter 'enable_opacity' of shade node 'usd::rtx_scope::/RootNode/Looks/mat_76D4084DEC3BEEEC/Shader::::Z73file_3A::Z17D_3A::Steam::steamapps::common::FarCry::Z58rtx_2Dremix::captures::materials::ZF2AperturePBR_5FOpacity_2Emdl::AperturePBR_Opacity(color,float,texture_2d,bool,bool,float,float,texture_2d,float,texture_2d,float,texture_2d,bool,color,texture_2d,float,int,int,int,bool,bool,bool,::Z73file_3A::Z17D_3A::Steam::steamapps::common::FarCry::Z58rtx_2Dremix::captures::materials::ZF2AperturePBR_5FOpacity_2Emdl::BlendType,bool,::Z73file_3A::Z17D_3A::Steam::steamapps::common::FarCry::Z58rtx_2Dremix::captures::materials::ZF2AperturePBR_5FOpacity_2Emdl::AlphaTestType,float,texture_2d,::Z73file_3A::Z17D_3A::Steam::steamapps::common::FarCry::Z58rtx_2Dremix::captures::materials::AperturePBR_Normal::normalmap_encoding)((11))' not available in the MDL representation.

#

i shouldve said in the console in retrospect

#

this was dumb i left out alot of details

elder rampart
#

which game

#

mmm

heady timber
#

first far cry

elder rampart
#

this is a job for mark or someone more experienced than me srry

#

but in game what problem do you have

heady timber
#

nothing ingame that i cant fix my self

#

but thanks for trying

heady timber
#

at this im becoming sad but however i do need advice again

#

my game wont capture usd frame no matter how many times i click the button

flat ginkgo
heady timber
#

okay

#

thanks

#

im trying to use usd create to help with my efforts in making far cry 1 rtx

flat ginkgo
heady timber
#

cause it doesnt look like its doing a lot and the textures and water stuffs need to be maunally add via the dev portion of the remix menu also water isnt reflative

#

i know it seems hard

#

but i feel the orginal far cry is a under rated classic game that just needs a face lift

shut rampart
#

When two people who don't know a lot about create and remix start arguing about replacements.

tight oriole
tight oriole
spark dome
#

How to fix error: Status: Status Missing?

tight oriole
#

But I don't like pestering people 24/7, so I try to limit the amount of things I ask

tight oriole
kind niche
#

Let's not go down this road.

I recommend not working with shader replacements until you have a basic grasp of material replacements on their own. Use the standard shader with new textures and call it a day. If you need a template here's the script I'm using in Anachronox. Open it up with a text editor and you'll see the format for materials. You can get the hash names from your captures/textures folder and you can get an output like this automatically if you decide to use the last released version of PBROven (haven't had a chance to polish up 0.20 yet, we'll get there eventually).

tight oriole
kind niche
#

And to reiterate-- you will not get Omniverse provided materials to work in Remix. It can't be done, it's not compatible.

tight oriole
#

It would be nice if it did tho tbh

#

But ig maybe in the future it might be made compatible

rare gull
kind niche
#

It sounds like the red banner at the bottom left, which just means there's no status included in the USDA.

rare gull
#

ah, yeah

#

nothing to worry about then

spark dome
#

Then what to do?

rare gull
#
(
    customLayerData = {
        string remix_replacement_status = "Release Ready"
        }
    }
)```
i think this can be added to the mod.usda to fix it?
spark dome
#

Ill try

spark dome
#

but lights still dont appear

rare gull
#

which game?

spark dome
#

Wolfenshtein Return to the Castle

rare gull
#

#1096847508002590760 message

#

make sure you're adding this line underneath each added light

#

otherwise it'll be invisible

spark dome
#

also materials dont appear

rare gull
#

what do you mean?

#

the texture on the left seems to have changed

spark dome
#

Yep

#

but

#

its must to look like this

rare gull
#

can you send your mod.usda?

spark dome
#

maybe thats because of png idk

tight oriole
#

iirc they have to be dds files

spark dome
#

well then i convert them

tight oriole
#

yes

rare gull
#

it looks like you were changing some instances instead of materials

rare gull
#

you have a total of 2 textures specified:
@../../captures/textures/light_rock_detail.dds@
@../../captures/textures/ground_fall_dried.dds@

the top one is assigned to a shader within OmniPBR, which doesn't sound right

spark dome
spark dome
#

sorry

#

i sent you wrong mod.usda

#

this one

spark dome
rare gull
#

you placed your light improperly

#

it's placed in the world, rather than attached to a mesh

#

#1114665813866205194 message

#

i would recommend watching Adam's tutorial on it

#

as for the textures not working properly, converting to DDS should fix that

#

i cleaned up your mod.usda file and removed all of the broken or unnecessary content

spark dome
#

@rare gull for some reason Composer wont provide me to save usda

#

when i make changes

rare gull
#

right click mod.usda and save

spark dome
#

I overwrite it and everything were reseted...

chilly thunder
#

Hey guys trying to learn how to fix the water shader for Half life games, when I implement the capture usd into omniverse its not displaying any water on the map D: would love some insight, been really struggling learning omni x.x

spark dome
#

Someone know why when i trying to apply PBR on texture, in game base texture dissapear and there only normal and rough?

real portal
#

You might need to copy the original texture into your mod folder and reassign the albedo to it.

real portal
#

Your replacements folder

spark dome
#

Ah maybe i get it

real portal
#

You are trying to assign normal and roughness maps so the albedo map is assigned to the original. What I mean is to copy that albedo texture in your captures next to your new textures, replace the original path to the new one from the USD Composer

spark dome
tight oriole
#

Does anyone know a good method for replacing models?

rare gull
#

top pin in the channel

tight oriole
#

is that using your tool thing?

#

and is there a good tutorial for texture replacements too?

#

because I would rather start with that, based on the fact that Mark recommends starting with that first since they're also a lot easier as i've heard

rare gull
tight oriole
flat ginkgo
# rare gull yes. my tool converts most meshes to be compatible, but you still need to triang...

USD libs for python are very weird and difficult to deal with in my experience.

  • Things don't do what they suggest to do (ex: Setting interpolation mode for things doesn't recomputes anything)
  • It is a thin wrapper on top of a bunch of C/C++? libs, so no ctrl+click to inspect the source is gonna help you
  • The docs for many of those things we need are too succinct

Seems like the whole USD format concepts is something we must master before trying to make sense of these libs Peepo_Think

With all of that I meant to say, would be nice to have some more programmatic automations like being able to convert materials from other formats to the ones we have defined in the mdl files, like for exporting materials directly from DCC tools, also triangulate meshes if they aren't, inspect suboptimal or repeated replacements, as well as many other stuff for CI/CD that I'd love to work if only it was a bit easier to get things done on the python side

shut rampart
#

You know what WOULD be nice
The damn creator toolkit

rare gull
#

i was going to implement automatic triangulation of meshes, but the only library i could find to do that was Blender. however, Blender doesn't expose their python library to system python by default, which renders it mostly useless

flat ginkgo
# rare gull i was going to implement automatic triangulation of meshes, but the only library...

Well, with a little bit of time it wouldn't too difficult to write some basic triangulation algorithm. Just loop on faces indices and the "vertices per face" array to form triangles out of the closest triplets of vertices sort of speak. Something like delaunay triangulation should work. But yeah, better a big message to warn ppl to go back and triangulate their damn thing in their DCC with their preferred methods than doing that honestly

fair helm
#

I've had to do that a few times, for converting and processing files.

sudden trail
#

can somebody how to setup replacement textures

sudden trail
#

my bad

sudden trail
#

can somebody give me a video on model replacment

flat ginkgo
#

Don't think there is a video, @keen canopy was working on it afaik, but the top pin in the channel, if followed step by step carefully, should be enough

keen canopy
#

I could do the bit after installing python and the USD library but but no one's getting past that part without code knowledge

real portal
#

Requires: Python >=3.6, <3.11

keen canopy
#

Yea had to use an old version to get it to work.

sudden trail
#

bro

#

what

keen canopy
#

Right

#

Might have to wait for Kim to get it going in omniverse or something

rare gull
#

i already have a script that runs in omniverse

#

that's the one linked in Mark's tutorial now

#

no one's getting past that part without code knowledge
also it's just a reallllly simple command to run the other script. just two file paths, ultra easy

keen canopy
rare gull
#

i didn't think so? you just need to install python and then run pip install -r requirements.txt after downloading my repo

#

it's like 3 steps total

#

maybe the difficulty came from the python version requirement

frosty charm
#

Has anyone done much mesh replacements? Because I want to know what you use for recreating them

flat ginkgo
frosty charm
#

where is the python script?

keen canopy
keen canopy
frosty charm
#

How can i make a certain part of a texture reflective in my case a puddle?

real portal
strange elbow
#

Does anyone know if we are able to replace UI (currently rasterised, but exclusively asking about UI) textures at the moment with texture replacements, or if it is planned?
I wasn't able to get it to stick with a quick test, so I assume not, but hopefully it'll be on the cards?

keen canopy
#

No sorry you'll have to use traditional modding tools to do the ui

strange elbow
#

I am doing something very silly with my octahedral normal maps and I just can't figure it out.

Encoding with BC5 using texconv (https://github.com/Microsoft/DirectXTex/wiki/Texconv), if I encode without sRGB flags, the reflection slants to the left, if I encode it WITH sRGB, it slants to the right! (Left or right determined by the rotation of the in-game object), I've tried -srgb, -srgbo and -srgbi just in case there was something I didn't understand but nothing seems to result in correct output.

I encoded a flat normal map of pure Vector3(0,0,1) up normals to Oct and tried that, and reflections were almost correct, with only one or two degrees tilt, but even still that being a little bit off seemed suspect.

I've also tried setting colorSpace = "raw", colorSpace = "auto" and colorSpace = "sRGB" in my mod.usda with both encoding settings that perceptually darkened the image (default) AND settings that retained the same gamma ('-srgb, presumably as it tells texconv that both are in the same colorspace and no gamma correction is nessesary) and none seemed to impact my result

#

Hopefully I'm just missing an obvious trick?

#

Otherwise, can someone share an example of a correctly encoded octahedral normal map, something vaguely spherical should be all I need to confirm against, make sure my converter isn't cooked ๐Ÿ‘€ ๐Ÿ’ฆ

fair helm
fair helm
real portal
#

@fair helm Do Portal material-shader work outside of the Portal game ?

fair helm
#

yes, but you'd need to correctly mark 2 textures that only show up once per frame as the two portals

real portal
#

USD Composer displays that material red, the properties menu works (I think this means the syntax is correct)

fair helm
#

USD composer isn't going to do the portals right.

do you have another mesh using a material with portal_index set to 0?

real portal
fair helm
#

And you should bring over the textures that Portal uses for its materials, at least until you customize it to something else

real portal
real portal
fair helm
#

could you record a video or at least more screenshots from other angles? it's hard to tell what's actually going on in your shot

real portal
fair helm
#

USD Composer isn't finding the MDL file, which probably means the path is wrong. The runtime doesn't actually care - it's just searching for the string "Portal" in the mdl name to know which runtime shader to use

real portal
#

There is no such material file

fair helm
#

those are valve's model files.

#

When you take a capture, the game will create some AperturePBR_BLAH.mdl files in the capture folder

real portal
fair helm
#

I don't remember if the AperturePBR_Portal.mdl file is copied there, but it should be

real portal
fair helm
#

looks like whatever you have that anchored to might be culling

#

is there an aperturePBR_opacity.mdl?

#

and have you taken a capture?

real portal
real portal
#

There is no AperturePBR_Portal.mdl file saved anywhere

real portal
fair helm
#

okay, then I guess you won't be able to get the Portals even slightly working in USD Composer. It should still be possible to get it working in game - I'd recommend copying over the portal materials directly from POrtal's replacements, including the textures, and seeing how that goes

#

you may also need to set rtx.rayPortalModelTextureHashes in rtx.conf.

real portal
fair helm
#

I'm not entirely sure how those texture hashes are used

#

bt you need 2 hashes in that list to turn on some aspects of portal rendering, from the looks of the code

#

That code could be changed to check the overrideMaterialData's type, and check if it already has a portal_index property.

#

(If you're comfortable with c++, that shouldn't be that hard of a change to submit as a PR)

real portal
#

Without that config it'll still appear glitch

real portal
#

Should I open an issue for this?

fair helm
#

Yeah, that'd be a good idea.

real portal
#

Thank you for your time ๐Ÿ’š

fair helm
#

Thank you for spending time playing with Remix ๐Ÿ™‚

strange elbow
#

I went away and had some actual sleep (best step 1 for bug fixing ๐Ÿคฃ )
(Long ramble ahead of all the silly things I was doing, feel free to skip)

Thank you @fair helm for your old post on oct normals: (#general-remix message)
I forgot this before / after comparison was available!

Primarily, the reason so many of my changes last night had no effect.. is because I wasn't feeding texconv.exe the overwrite flag, so not all of my changes were even being saved

Secondarily with a A/B comparison I was able to nail down a few issues with my code too, mostly some edge case math errors and that I didn't notice that the nvidia octahedral normal encoding was doing the whole rotate by 45 degrees and scale thing that if I understand correctly is used to maximise precision. (I was only using: https://knarkowicz.wordpress.com/2014/04/16/octahedron-normal-vector-encoding/ which doesn't do that)
So thank you again for posting the before / after image so I actually had a known good input and output to test against!

Lastly, turns out Godot doesn't support 16 bit PNG images specifically (although it does support 16 bit for other formats), so because I was saving everything out to png as a lossless for,at for interim changes, all my normal map processing was being done on blown out values ๐Ÿ™ƒ

real portal
#

@fair helm Should I continue the conservation here or in the issues page?

#

I hope I understand everything correcty. Created the mask texture, It looks like this. (0,0,0,0) frame and (255,255,255,255) circle. Set it as emissive mask of portals. Set every other property to their defaults (except for index). Now portals are not completely blue but still glitch and non functional.

fair helm
fair helm
#

It's definitely doing something with the textures... but I suspect some step is still not set up or initilized.

real portal
real portal
fair helm
#

It's only ever been tested / developed in Portal, where there wasn't any need to make it work for mesh replacements. In theory it should be possible to make it work on mesh replacements, but since we haven't been actively testing that path it's possible something is broken. It's also possible there's some setup step I'm not aware of that would make things work.

#

oh, did you add all of these to your rtx.conf?

      { "rtx.rayPortalEnabled",                   "True" },
      { "rtx.rayPortalModelNormalAxis",           "1.0, 0.0, 0.0" },
      { "rtx.rayPortalModelWidthAxis",            "0.0, 1.0, 0.0" },
      { "rtx.rayPortalModelHeightAxis",           "0.0, 0.0, 1.0" },
      { "rtx.rayPortalSamplingWeightMinDistance", "100.0" },
      { "rtx.rayPortalSamplingWeightMaxDistance", "10000.0" },
      { "rtx.rayPortalCameraHistoryCorrection",   "True" },
      { "rtx.rayPortalCameraInBetweenPortalsCorrection",   "True" },
real portal
#

These doesn't seem like the rtx.conf's syntax

fair helm
#

it's not - that's from a cpp file that adds default values to the config based on game name.

#

you'll need to change them into the conf format if you're adding them in the conf file for another game

real portal
fair helm
#

good question.. I don't actually know off the top of my head, but you could always change one of the Options that have multiple components and save your rtx.conf to see what it does

#

lemme see if I can find an example

#

rtx.rayPortalModelHeightAxis = 0.0, 0.0, 1.0 seems to be the format

real portal
#

I will try with a different game

#

just to make sure

fair helm
#

hmm, bummer, I'd have thought rtx.rayPortalEnabled would make a big difference :/

#

could you attach your <game_name>_d3d9.log file?

real portal
#

I just realized remix can't detect the mask texture

#

Isn't it supposed to be an albedo map

#

with --format bc7 --no-mip-gamma-correct

#

err: Texture d:\Games\Battlefield 1942\rtx-remix\mods\gameReadyAssets\SubUSDs\meshes\SubUSDs\textures\portalMask.dds asset data cannot be found or corrupted.

fair helm
#

hmm, yeah, I though it would be bc7

real portal
#

also what is this ๐Ÿ™‚ warn: [SecretReplacement] Could not find stage: rtx-remix\mods\gameReadyAssets\./SubUSDs/SM_Prop_CompanionCube_Lens.usd

fair helm
#

meaningless spam that we should really get rid of at some point ๐Ÿ˜›

#

could you verify this path is correct?
d:\Games\Battlefield 1942\rtx-remix\mods\gameReadyAssets\SubUSDs\meshes\SubUSDs\textures\portalMask.dds

#

it looks wrong to me

real portal
#

Oh what

#

I used relative paths: ./SubUSDs/textures/portalMask.dds

#

Oh damn this is not mod.usda

fair helm
#

if your mesh USD is in SubUSDs\meshes\, and the texture in SubUSDs\textures\, the path in the mesh USD would need to be ..\textures\portalMask.dds

real portal
fair helm
#

well it loaded your texture this time

#

You could try swapping up these lines, but it's a bit of a stretch

info:    rtx.rayPortalModelNormalAxis = 1.0, 0.0, 0.0
info:    rtx.rayPortalModelWidthAxis = 0.0, 1.0, 0.0
info:    rtx.rayPortalModelHeightAxis = 0.0, 0.0, 1.0
#

Do you know which axis is up in your game?

real portal
fair helm
#

nope

#

but those values may be in the UI somewhere

real portal
fair helm
#

I don't see anything in the UI code, so probably not.

fair helm
#
info:    rtx.rayPortalModelWidthAxis = 1.0, 0.0, 0.0
info:    rtx.rayPortalModelHeightAxis = 0.0, 1.0, 0.0``` maybe?  No clue if that will actually help
real portal
#

If I let it get culled of screen then enter just enough so I can see the whole circle, it will project a somewhat low res image of whats directly if front of it

fair helm
#

oh, your config still doesn't have any rayPortalModelTextureHashes. You definitely need 2 of those specified

#

just copy the values from Portal

#

rtx.rayPortalModelTextureHashes = 5EC61BC800744B26, DFDACB6DE1C7741E

#

Also, apparently the specific structure of the mesh vertices matters - it basically only works with the exact quad that Portal uses (including vertex order).

#

Your best bet for making the mesh may be to take a capture in Portal with both portals active, and then grabbing the meshes from those portals and using them for your mesh replacement

real portal
fair helm
#

yeah, there are places where we check the size of that list to decide if portals should be active

#

which is janky considering we have a separate rayPortalEnabled property..

real portal
#

They are totally white now, I think that's a progress ๐Ÿ™‚

real portal
last lava
# strange elbow I went away and had some actual *sleep* (best step 1 for bug fixing ๐Ÿคฃ ) (Long r...

In any case ,
always have capture normals from shader DISABLED. (when you have octahedral normal maps replacements)
I had upside down reflection problem+wrong projection distance wise (in NewVegas) on that reflection cause of that. And the octahedral normals werent properly translated also on other textures.
This might have been the same problem in Stalker clear sky , in that i had that same problem as you, like roughness maps being anisotropic, angled.but i dont know what i did exactly to solve et(besides disable capture normals from shader)

strange elbow
# last lava In any case , always have capture normals from shader DISABLED. (when you have ...

Huh, I dont think I had that issue, but Ill scratch down to test it after work.
I would have uploaded an image of things working... but my computer has been having some issues lately with random restarts; and did so as I was taking screenshots.

Ive cleaned it out, redone my fans and made sure all plugs were well seated and I think that might have done it, its not restarting when I bump my desk so thank feck for that ๐Ÿ‘€๐Ÿ’ฆ

fair helm
#

FYI - as of build dxvk-remix build #228 (https://github.com/NVIDIAGameWorks/dxvk-remix/actions/runs/6052534418), mesh loading should be a lot more flexible.

Haven't done extensive testing of the workflow, but you should be able to just convert an FBX into a USDA in USD Composer, change the material to an AperturePBR_*.mdl, set up the material, and then use that mesh as a replacement.

GitHub

Contribute to NVIDIAGameWorks/dxvk-remix development by creating an account on GitHub.

keen canopy
#

Hellz yes. Skipping the need to open blender and convert to USDA, A whole step less in my workflow. I'll give it a play this weekend and see how I get on ๐Ÿ™‚

fair helm
#

you still need to convert to USD, you just don't need to run a custom script to change the interpolation and do triangulation

keen canopy
#

Can i do that in omniverse now?

fair helm
#

USD Composer should be able to import an FBX and save it as a USDA

#

(AFAIK that's been possible since before Remix came out)

keen canopy
#

Yea but it had some issues with the order of the vertex array or something in the usda didn't it. They weren't in the correct order

fair helm
#

it wasn't right coming out of blender either - it needed a custom script either way

keen canopy
#

I'll give it a go ๐Ÿ™‚

snow lagoon
#

Okay so, going to need some assistance to actually get an understanding of this.
I've set up my mod.usda, I have my root layer, my mod USDA layer and the capture itself.

Just trying to add lights.

#

Now my lights don't show up in game, which is to be expected as they're not assigned to a parent, they'er just sitting in the world default prim

#

Am I correct in assuming that simply grabbing the lights and dragging them onto the mesh in the outliner will make them the children of the mesh? Does this not mess with the layer hierarchy? Is that completely separate from the stage one?

#

Hmm, I'm clearly ballsing something up

#

Hmm yeah so the enhancements in-game are enabled but my new lights do not show up, despite now being children of the ceiling mesh

#

Inside my games folder, there's rtx-remix/mods/gameReadyAssets/mod.usda

#

This is the expected set up correct?

#

Have made double sure that they're parented to the ceiling mesh as well, and nada in game

fair helm
#

okay, first off - you're dragging the lights into the inst_HASH prim. It needs to go on the mesh_HASH prim with the same hash

#

the inst_HASH prim is an instance of the mesh asset that is defined in the mesh_HASH prim. Remix Runtim only replaces assets, not instances

#

You'll also need to ensure your mod.usda is set as your edit target before you make these changes, so that you aren't editing your capture file

snow lagoon
#

Adam hooked me up, got it working now, kind of? Doesn't look like it does in the editor but it does function

fair helm
#

editor is using an entirely different renderer from the runtime. We've tried to make it as close as we can, but it'll always be somewhat different

snow lagoon
#

Yeah naw I get that! but this is like, COMPLETELY different

#

This is the editor for reference

#

And that wall next to james is now flashing black for some reason

#

Very odd

fair helm
#

that's mostly a difference of exposure. Play with the camera settings and those will probably be much closer to eachother

snow lagoon
#

Aaah is auto exposure on by default?

flat ginkgo
#

You can also play with the tonemapper settings, specially cm^2 factor and Film ISO to sort of adjust to the game lighting, but won't ever be the same

snow lagoon
#

Oh well, this is a decent step one at least hah

flat ginkgo
#

Yeah, nothing beats booting up the game and checking by yourself. I personally don't even bother setting up for every capture I take, I just go with camera lights all the time

snow lagoon
#

I wish I could do that conveniently haha, my 2070 super can't really uh, handle all these running at the same time

#

It's interesting, feels a lot like the diffuse gets completely blown out due to the roughness or something! I didn't see these issues in the screenies Adam took of the same scene

#

But that doesn't really matter, as the mesh and texture replacements will deal with that

bitter pagoda
#

You can increase the roughness, and for now just wack the metalness up, it's only temporary

fair helm
#

Displacement support has been added in the form of POM heightmaps.
This is a very experimental feature, and the asset format will almost certainly be changing multiple times in the near future. That being said, if you want to play around with it now, here's a basic guide:

(You'll want to already have a solid grasp of replacing materials with Remix before attempting this)

In any material using AperturePBR_Opacity.mdl, add the below properties

                asset inputs:height_texture = @./textures/height.dds@ (
                    colorSpace = "raw"
                )
                float inputs:displace_in = 0.05```
 (you'll need to do this in a text editor for now - it should get added to the MDL so USD Composer can edit the attributes soon though.  USD Composer doesn't currently support any kind of displacement, so no previs in there.)

A texture value of 0 (black) will be the deepest part of the resulting image.  255 will be the height of the original surface.

Note that gradual height changes will look better.  vertical walls (especially thin ones) will look bad in the current implementation

There's also a global displaceIn multiplier in the Remix menus, which you can use to test out different displacement values.
bitter pagoda
fair helm
#

@keen canopy BTW - I just merged in few POM fixes, including flipping the height map to 0 is lowest, 255 is highest and fixing the direct lighting contribution. You'll need to un-invert your height maps, and you should be able to turn the direct lighting contribution back on. (may take a bit to show on github)

shut rampart
#

Like 255 will be level with the geo

fair helm
#

255 is the original geo surface, yes

shut rampart
#

Since protrusions are not a thing

#

I see

fair helm
#

Our current algo just changes the results for rays that hit the original flat surface, so we can't really do outwards protrusions with it.

shut rampart
#

Right

dusky solar
#

That awesome

keen canopy
dusky solar
#

Thats fucking awesome... we need to implement that in NFSU2 RTX Remix @shut rampart @lament knoll @flat ginkgo

rare gull
#

it looks a little bit too... smooth? something looks off. maybe it's just the height map

#

but i'm excited regardless

dusky solar
#

Nope, normal map is too smooth

#

There are no details

rare gull
#

hm. i recalled seeing that wall in past screenshots and it looked quite a lot clearer, but it could just be missing the normal map here as you said

dusky solar
keen canopy
#

its a smooth wall

rare gull
#

maybe it just looks off because of the harsh transition between the ground and wall then

#

ah well. it still looks good regardless

bitter pagoda
#

Could be that the POM has no self shadowing either

#

Or does it, I can't tell, just woke up

fair helm
#

POM definitely has self shadowing - you can see the rocks in tadpole's shot casting a shadow down and to the right. (though there's an option in the remix menus to turn that on and off)

That being said, the current implementation doesn't do anything about the normals, so the normal at each pixel will just be based on the normal map.

#

(i.e. normals won't change as you change the displaceIn value, even though they really should)

dusky solar
#

so basically he needs better normal maps xD

fair helm
#

Or I just need to make our POM algorithm better. It's pretty basic right now

keen canopy
#

I'll take another look at it's normal map this evening

keen canopy
#

I can increase it's strength by 0.2 but any further than that and I loose definition as my normals start to point in every more extreme directions.

#

and in game

rare gull
#

that looks really good imo

frosty charm
#

What'd you make the heightmap with?

keen canopy
#

Photoshop , drew around the bricks ๐Ÿ˜†

shut rampart
#

Not bad

shut rampart
#

png prefered

#

I want to try something

#

Actually

#

Just the normal map might work

keen canopy
#

one sec, i'll upload the lot

shut rampart
#

Can be any texture. But the brick wall might be nice

#

So how was this normal map made?

#

Also better question. Is this normal mak direct x or opengl?

#

I assume it's dx

flat ginkgo
#

From the pic it seems ogl

shut rampart
#

looks dx to me

#

I'm thoroughly confused right now

#

Alright

#

It is dx

keen canopy
#

oh sorry was muchin' my lunchin'

#

yea its dx

#

made in sustance sampler

#

what are you trying to do @shut rampart ?

shut rampart
#

uhhh

#

Experimenting with an ai displacement map generator

#

It can make a normal from color and then a disp from that normal

#

Or just a disp from a normal

keen canopy
#

ah right, is there something you can do with the normal map? seeing how it's coming from U and V directions?

shut rampart
#

Do what?

keen canopy
#

check out the channels of a normal map, each one represents light coming from a single direction without shadow

#

pull R and G channels and blend with an overlay. it's half the height map ๐Ÿ˜›

#

substance sampler makes the height map first and converts that to the normal map, and its got AI to do it, just use that

dusky solar
#

Well, i just use Materialize for height map... can also create smoothnes/roughness maps but these are bad. Normal maps can work fine

keen canopy
#

quixel suite!

dusky solar
#

Thats what u use?

keen canopy
#

No just just being silly

lament knoll
#

I donโ€™t think quixel can even generate materials from images like sampler or materialize.

snow lagoon
#

Quixel Mixer is to mix maps together and texture 3D assets, it doesn't have any functionality to generate maps where none exist

#

Althought it can produce some pretty decent curvature maps from meshes but that's about it

flat ginkgo
snow lagoon
#

But an actual baked one will usually give you a better result

keen canopy
#

Teddy always seemed nice on polycount back in the day.

snow lagoon
#

There are definitely things to respect about him!

keen canopy
#

Is it how the man works a cap

#

Tell you what if we had a library of scans remixing would fly

snow lagoon
#

It certainly would! I own many assets still as I aquired them prior to the epic buyout, so there are scans that I can properly use for remixing but naturally the library back then was very limited compared to today

keen canopy
#

And I bet you can't slap them in a mod and share em either

snow lagoon
#

The ones being distributed today no, but I'm pretty sure I could with the ones I aquired back in the day

#

I'd look it up, but info on the old stuff doesn't exist anymore XD

keen canopy
#

Anything I've made at work belongs to the studio

snow lagoon
#

Yes but they gave us employees a monthly allowance to spend on the megascans store back then

#

So it's stuff I've legally aquired and owned like a customer

keen canopy
#

Ah I see, neato

#

You seen William fulchers latest video? Church scan. Looks sick, lots of mega stuff

snow lagoon
#

Yeah for sure! Super gorgeous! Although we're getting pretty #offtopic now haha

keen canopy
#

Oh oops

fair helm
#

Replacement meshes can now be independently forced into the various draw call categories (which were previously set for the entire original draw call based on texture hash).

The full list of mesh categories available can be found here: https://github.com/NVIDIAGameWorks/dxvk-remix/blob/main/src/lssusd/usd_common.h

Each of those should correspond to a texture category from this page:
https://github.com/NVIDIAGameWorks/dxvk-remix/blob/main/RtxOptions.md#complex-types
(all the values with the hash set type)

i.e. to mark a specific replacement mesh as a static decal:

def Mesh "myMesh" ()
{
    ...
    bool remix_category:decal_Static = 1
    ...
}

Each string returned from getInstanceCategorySubKey in usd_common.h should match one of the texture categories from the texture selection panel, though some of them don't really make sense and may not work. (i.e. why would you ignore a replacement?)

disclaimer: This is also experimental and mostly untested, so your mileage may vary. The implementation specifics may change.

#

@rare gull pls pin the above post

flat ginkgo
fair helm
keen canopy
#

Would this mean you could add a USD mesh replacement and mark the USD as dynamic decal and it'll behave as the other dynamic decals do?

fair helm
keen canopy
#

Oh exciting. You here that @snow lagoon got your decals after all ๐Ÿ™‚

snow lagoon
tight oriole
#

Is there any way to rotate a capture? My creator scene is Y up while my USD scene is Z up. Makes it hard to position and look at things

tight oriole
#

also has anyone had thing happen? I changed the floor material and the in game one is some material I have never seen before, unrelated to my actual material as shown in the creator window

sacred pond
#

not 100% sure if that's what's happening here but it has been the cause of issues before for me

real portal
tight oriole
# sacred pond some textures in HL2 use detail textures, which are shader-dependent and Remix d...

So it was some weird thing that I suspect has more to it but couldnt reproduce, but another surface ended up doing that later on that I ended up fixing with some weirdness.
When trying to fix it, as a test I opened the dds in paint.net and saved it again, when reloading the texture in HL2 it turned to broken rainbow pixel noise. That had never happened before, after changing the compression type a few times to I think BC7 or something like that, it suddenly popped back into the actual proper texture. No clue what caused that or how it exactly fixed itself, but it did.

clear tree
#

I don't know what im doing wrong but it just won't work, I try to replace an asset, follow all the steps 1 by 1, and I have this error when changing the prim path

#

I did everything like said in the pinned comments and it won't work

flat ginkgo
#

"Alert", not error

clear tree
#

Yeah but it cancels my change

#

it come back to "default prim"

flat ginkgo
#

When you edit your grass_small_01.usd file in OV, you must set the root prim of that file as the default prim, make sure to do that. Otherwise you must specify which prim is the one that must be used by the reference

flat ginkgo
clear tree
#

So I open my USD, and change the prim path of its Rootnode to the prim path of the Child xform i created ?

#

I think i just didn't understand what i'm supposed to change in this step

clear tree
flat ginkgo
#

Then back on your capture scene, just leave that Prim Path field in the reference block as <Default Prim> as is rn

clear tree
#

okok thank you

#

It still don't work, the old asset disappear, cuz i delete it, but the new one don't appear IG, idk why

flat ginkgo
# clear tree It still don't work, the old asset disappear, cuz i delete it, but the new one d...

This "./meshes/grass_small_01.usd" must be relative to your authoring layer's location. If the authoring layer is mod.usda, then you should have a gameReadyAssets/meshes/grass_small_01.usd file in your project.
Check if everything is in place.
If it still doesn't work, try using the tool I made to assist with such things, it should be as easy as right clicking the object in world view > RTX Menu > Add Model
https://discord.com/channels/1028444667789967381/1146527055664652449

real portal
clear tree
clear tree
#

Also i can't move the asset ? It works in USD Composer but don't change IG, any idea anyone?

flat ginkgo
#

Also, try dragging the material outside that Materials folder.
If you prefer, the extension has an option to add materials to a mesh which allows you to select the proper mdl file.

Make sure to select that opacity one. You can find it in your captures/materials folder, copy all the 4 mdl files from there into your mod folder

flat ginkgo
clear tree
#

Ok but how do I move it then ? When I click it it take me to the inst_HASH, and when I go to the mesh I don't have anything to move it

real portal
clear tree
#

And now i'm blocked here, whatever I do with this mesh it won't show any texture, and i'm using ur plugins, "add model", I added this carpet, it showed, then "add material" and selected "Aperture opacity.mdl" that I moved in my mods/gamereadyassets/materials before doing these things, and it still don't work

clear tree
flat ginkgo
flat ginkgo
# clear tree Any idea ? Or any more info needed to fix this ?

Select the Shader prim inside the NewMaterial_1 and check if it is pointing to a valid mdl file, relative to your authoring layer file location.
Also, click the mesh prim for your carpet and assign the NewMaterial_1 to it
Make sure to never make your changes in the inst_HASH objects nor point your references to them or anything. As a rule of thumb, just ignore their existence

clear tree
#

ok i'll try this thanks

stray ether
#

ok, how do I go about replacing a character model?

flat ginkgo
# stray ether ok, how do I go about replacing a character model?

Not sure if anyone have done it before in the community. Lots of thing must go well for it to work. The hashes must be stable, which means the mesh bust be animated in the gpu side rather than on cpu and updated every frame.
Afaik, character meshes are captured just like any other mesh, but with some extra primvars defining the skeleton and weights for the vertices, so you gotta replace the model and keep the same bones or something like that. Sry, never messed with it before.
If the hashes are stable, try uploading the usd for the character meshes here so I could take a closer look at how it is structured

stray ether
#

I will check when I get home if its stable or not. Will need to boot and check the debug but the character capture is partially missing it seems like

#

one sec and I will send it across

#

I was pretty much trying to see if I can fix the invisible model by replacing it

flat ginkgo
#

I'll check in a sec

stray ether
#

Thanks man

flat ginkgo
# stray ether

Sry mate, been a busy day. Looking at it, it has nothing new, seems like a static mesh with no skinning. Probably it is cpu skinned then Peepo_Sadge

stray ether
#

Thanks for checking. I'm just going to keep digging