#Manually Remastering Assets
1 messages ยท Page 2 of 1
Make sure it's only using the R/G channels though.
I'll take it
I got Mike Wazoswski'd ๐ญ
just for normal maps mate
You really did
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?
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
Just remember that the second the launcher change happens, you get to retroactively laugh at us for having so much trouble finding it. ๐
So what am I doing wrong here?
Can I apply displacement or bump map and parallax map in RTX remix?
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

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.
setting up a material ๐
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
huh, what happened to the wagon? I didn't see you delete the original, but it was still missing in game.
had to add the custom int preserveOriginalDrawCall = 1 bit that i do at the end
then pressed stop instead of pause ๐
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
oh yea I'll get moving that stuff over
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
oh hey, that looks a lot better. no st:indices property
omniverse documentation ๐ who would have thought
I thought you were using file->import, which also gives options when you import something
I was and you get the primvar:st:indices bit every time
huh, but convert to USD is giving you different options? how strange
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 ๐ฆ
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
promising. Have you tried using that mesh as a replacement?
or running it through the interpolation conversion script?
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?
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)
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
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?
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)
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.
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
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
My way of saying.. 'what am I doing wrong?'
I will test on static mesh tomorrow, its past midnight for me, I will try to ask mext time only if I really feel things should work, so as not to waste your time
you're not wasting my time
Alright well let me get back to you tomorrow
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?
Yeah definitely, though in this specific case it is just testing increasing mesh density, I was triangulating in blender,
But I should try it additionally with the script too
I'm not entirely sure my script is actually working - I've yet to see it actually work for someone. The one I posted later with BlockIndices and ComputeFlattened might work better
What are you using to do the triangulation?
i was just going to utilize blender's python library
ah, okay. i wasn't aware of that. i did use your script for the initial Barnyard example by the way. for the followup tests, i just used models dumped by Remix itself
The script is only needed if the incoming mesh has faceVarying interpolation
would running the script on a mesh without it do any harm?
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)
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
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
USD Composer == Create
@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
Oh great! I'm guessing the grey mesh is the replacement? Is animation working on it?
yeah its thre replacement, no its just static mesh
do you get any errors in the game_d3d9.log file when you load that?
(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)
i was about to ask if that was even reasonable to expect
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
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?
here we go, not sure what i'm looking for in here
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.
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,...)
oh good catch with the targas
so how do i split every triangle out then? do i have the abilty to do that even?
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
there may be something that lets you do that in blender? I don't know those tools well.
what do you mean when you say split every triangle out? like detach every triangle?
looking forward to the, i guess 'skeletal preservation', In hitman, character meshes only appear when you select 'capture vertices from shader' does this indicate Gpu skinning or am i conflating things?
Yeah, the way we do triangulation during ingestion is very brute force, just make the mesh have 3 vertices per triangle
Oooh ok, yes that's easy enough. I'll give that a go later then ๐
Sorry, that sounds like vertex shader skinning. Remix only supports fixed function GPU skinning
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!
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
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.
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.
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
I think the fact that AMD and Intel GPUs are already booting into Remix (though with somewhat poor results right now) is a great sign for things to come.
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.
AMD and Intel cards are still making full use of RTXDI and other technologies though, right?
AFAIK yes, though I'm not an expert on the matter. I'm not sure what technologies are reliant on Nvidia hardware, but I know we have automated tests on non-Nvidia hardware to ensure we don't break compatibility.
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
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
๐ฆ
two little errors cant stop us
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.
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?
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.
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.
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)
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: (--, ++, --) (+-, -+, ++)
well thats fun, omniverse bug perhaps?
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
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
huh, what does it look like without running my script?
:/ 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...
What are the reasons as to why the models are loaded using this non industry standard set up? Optimizations for RT?
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
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.
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!
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
so looks like when i get my USD, however I do that, I need my faceVertexIndices to be in accending order
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
I've ran out of ways to export these meshes. I've tried max, blender and even substance painter I'm stumped.
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.
Aah, so it's a bust until the tool is out?
unless you or someone else wants to do some python scripting to fix up the vertex properties ๐ฆ
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!
The best time to learn to program was 10 years ago. The next best time is today ๐
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)
Learn how to set up some Octopus normals too, he'll love that.
Octopus
Node setup thar converts octa to tangent
There's still a few bugs
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
please type the question before pinging me ๐
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
yes. it will take in png files and output correctly compressed dds files
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
Ah gotcha
That's good
The current workflow of using 75 different softwares for a single texture replacement is tiring
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.
yes
how to make replacement for material?
I have no textures
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
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.
No, rtx remix doesn't capture textures i mean
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
using and rtx remix renders well these textures, but no one in captured
Are you out of disc space?
What game is this, and has this game successfully captured textures before?
135 GB Free
game CS Source with -dxlevel 70 +mat_dxlevel 70 -w 1920 -h 1080 +r_3dsky 0
You'll probably need to create an issue with logs then. Sounds like some kind of compatibility issue
If Remix is running it will create logs
Check if the folder is marked as read only or something?
no
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
Maybe RAM mistake or VRAM mistake
and make please good compatibility for dxlevel 80 ๐
i forgot to add : on last dxvk and bridge
It sounds like another user has had some success with getting Counter Strike: Source working, have you asked if they get the same bug, or tried their setup steps?
https://discord.com/channels/1028444667789967381/1124405743278370896
@fair helm hey mark
How can I fix my USDA file failing to parse?
Try opening it in a program that will log more details about why, like USD Composer? (open the console tab, open your USD, see what it prints)
I copied portal rtx USDA file
Still doesn't work
Again
Only happens in gmod
(Garry's mod)
what exact error are you getting? and what build version are you on?
err: USD mod file failed parsing: H:\SteamLibrary\steamapps\common\GarrysMod\rtx-remix\mods\gameReadyAssets\mod.usda
when you open that usda in Usd Composer, does anything print to the console?
I literally just downloaded the latest builds off bridge and dxvk
Im yet to do that
But it works in other games with the latest builds
It's just gmod
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?
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
I mean
It should be working because it worked in other games
If the content of the file is identical, then it's probably something with file permissions, folder permissions, or something unique to g-mod
Nope
Not the permissions
Something is definitely wrong with gmod
Imma try USD composer
well, this really shouldn't be a per-game thing - the game shouldn't have any control over this.
No errors in console
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.
Nope
Nothing
I've got nothing ๐ฆ Has anyone else working on gmod ran into similar problems? or succeeded?
Does a really simple mod.usda work?
Ive tried both a 3 lines usda files and a usda file from portal rtx
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
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
Pls anyone , make video for this
bet you cant fix this @fair helm lol
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.
Amazing
less meme's more 20,000 poly grass.
Wait is it actually 20k???
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
.. Is this the first successful textured mesh replacement that isn't just a triangle?
I'm honored and amused ๐
I think so yea ๐
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
not bad honestly, just recording a video now. around 30 on quality dlss at 1080p but thats always like that ๐ feels good, looks good
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
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
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.
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
(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
So buildings with mesh interiors won't cause problems
mesh interiors aren't just triangles though - adding more textures, lights, etc also has a cost.
This looks gorgeous. There is so many possibilities unlocked by being able to replace meshes in games. The whole look and even the very layout of scenaries props (ignoring collision)...
yeah, collision is the biggest hurdle to modifying existing gameplay via remix - you can change the visuals a lot, but the same sequence of control inputs will result in the same gameplay results.
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
true that
We could just use a emmisive texture to fake interior lights.
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
Yes, but don't emmisive triangles not receive light? As they are their own light source?
I'm not sure.. but a light also wouldn't receive light, right?
Yes
and weak emissives would still need to be lit by much stronger lights, or they would look pretty off
Right
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
@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)
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.
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?
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
Yeah I've got that too. It is weird because the meshes works and show texture mappings properly. The error goes away if changed to float2[] ...:st?
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
or one of you can submit a pull request. Just add it to this list:
https://github.com/NVIDIAGameWorks/dxvk-remix/blob/ebb0ecfd638d6a32ab5f10708b5b07bc763cf79b/src/dxvk/rtx_render/rtx_mod_usd.cpp#L696
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
yeah, there's unfortunately no uniform standard for the UV primvar name as far as I can tell. Most programs use st or uv.
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...
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?
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.
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 ๐ค
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
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
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
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
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
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
Here's the script to convert meshes to be compatible with Remix: https://github.com/Kim2091/RTXRemixTools/tree/main/RemixMeshConvert
so given this, modifying the script to fix or bypass that issue shouldn't be necessary?
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
guess i'll work on implementing it then
success!
๐
just double checking with mark pls fix mesh ๐
Too bad there isnt any Parallax mapping support :(
you aint seen my 80,000 tri grass? just displacement map it ๐
Mhm
But i dont think you can change the map geometry
I think you have been asleep for the past 32 ish hours
Kinda yeah
Been through horrible stuff didn't have time to check everything lol
so the script has a nice system here to add aliases to convert. works perfectly
We unlocked model replacements
I know about that
But i meant map brushes
I think cod is still on idtech 2 right?
Yeah that uses brushes
Well. Those brushes are baked out into geo, so you just replace that.
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
@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
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.
see the docs here: https://openusd.org/dev/api/class_usd_stage.html
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.
well, that does work. sadly this removes the ability to output to separate files, at least from what i can tell. i did try to make a temp file for it to modify, but it didn't pan out
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
alright, i worked around it
just copied the input as the output file name, and modified the copy in-place
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
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
@rare gull getting this error with this tool mate, any idea whats causing it?
running it the same way we did with the previous script
you saved the html page
download the entire repo as a zip, then run the script
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
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
The real sky mesh actually does get exported. It's just hidden in ov
is it? can you show me yours
You can make it show up if you export it as fbx and enable "export hidden assets"
isnt that the non replaceable sky omniverse adds?
Nope.
Hmm
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
Umm ignore lights?
could you show me this option I cant find it
In game setup
Wait
Umm
Im not sure if replaced materials appear in gamesetup
wheres game setup?
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
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
How do I create a new material for a mesh that doesnt have one assigned?
Is it currently just using vertex colors or something?
It's just not showing up for some reason, the terrain is split into tiles but no texture shows up at all
that probably means the original game used shaders for those draw calls
Is there any way to get around that, or no?
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
That's what I was hoping to achieve, manually assigning a material to the mesh tiles that make up the terrain
OMG
Fixed it
Simply turned down the game terrain settings in the ini file for goodness sake
It is always suggested to try games at the lowest graphics settings
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 ๐
How do I fix a capture importing upside dowN?
Where?
oh ye I've already done that
or dont set z up, do whatever isnt upside down
neither works
you captured that fast
I've already tried it
nah nothing is doing it
maybe this might help?
#general-remix message
oh, maybe If I use one of the games other camera's then
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
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
Yeah but I don't know what tools to use and the links are hard to find in those channels
the tool is pinned in each channel
just read the descriptions for each one and determine what you need
like my thread here for my scripts: https://discord.com/channels/1028444667789967381/1116120726903197926
i summarize them at the top comment (which is pinned)
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
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
Which exactly are you talking about?
If it's any of the preset CHN files, go for it.
almost done
@shrewd hedge #1129194028315988098 message
not ideal, but it'll hopefully work well enough for you
Weirdly now JPOG doesnt start anymore
even with a fresh install fresh remix files
makes no sense
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.
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?
PBRoven stores persistent data in AppData/LocalLow/anchorlightforge/PBRoven if memory serves correctly. However it shouldn't in any way be attached to the game.
Yeah didn't think so, just makes no sense
That would do it.
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?
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.
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
@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)
I'll record a video tutorial tomorrow kim, got the day off work
Looking forward to that! I can get the asset ingested with transferred normals, but no texture maps working.
I've tried recording but my jaw is killing me, gonna have to do it another day i think guys
Is there anything in here about remastering textures?
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 primmesh_02.usd: another mesh exported directly from blendermesh_02_assembler.usda: same as 01, but for mesh_02.mod.usda: The one that actually performs the replacements in themesh_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:
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.
Good point, I'm not sure if that is the issue still. Here is "mesh_01" and "mesh_02" and the "mod.usda" with 2 example replacements:
ah, they are two completely separate mesh_HASH prims, with separate references, and differently named materials... that's almost certainly a bug then...
Here is the files (I'm not using mod.usda actually, I'm using 030101_roadways.usda)
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?
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
You cetainly don't need to ask permission to open an issue
Yeah I was just checking if it makes sense haha. I'll do it later ๐
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
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
We're using Johnny Decimals system (https://johnnydecimal.com/) convention to separate all the hierarchy of mod "modules", the project is getting bigger and messier as we add more stuff to the whole map
Johnny.Decimal is a system to organise projects (or your life, or anything else)
ah, your mesh pipeline blows away the material?
yup, I'm exporting from that USD blender branch in OV Launcher
hrm, actually.. how did you generate your dds files?
It supposedly handles MDL materials import/export nicely, so maybe I should focus on learning a bit of those features in blender side ๐ค
cause visual studio can't even open them, which bodes ill about Remix being able to open them
NVTT for most of maps, chainner for normals
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?
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 ๐ค
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.
Sure, I'll work on it asap
You should probably ask on the Omniverse discord: https://discord.gg/8c7ujeBhwP
Mark to the rescue
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
u have to replace the original textures
gime a second
ok
u know how to setup ur mod.usda?
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
?
?
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
yeah but im trying to replace the textures with Creates built in materials
like I said, they load up just fine inside of create itself, but just not ingame
sadly u must use the original material
but then.. how do people add in new textures? because i've definitely seen them do it
here
this is how new textures are added
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
when you click on any model this screen will appear on the right hand side
why are you talking me through the process again? I can understand what you've told me
but it doesn't help me
...
.
Create has built in materials
I want to use these ingame
u you have to edit the original game material from create, you can't use one of the pre-made ones.
they appear on the models when I apply them, just not ingame
u cant replace the original materials
people have replaced the original materials tho
in other games
like Need for Speed
no, they dont replace the original materials
they replace the original textures
like normals, roughness maps etc
The only materials that work are the Aperture PBR mats. You can take a look at Portal and Prelude RTX for examples.
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
Don't post like this again please. Infuriating
can anybody help with a error i keep getting or is there some where else i should ask at
which error mate
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
first far cry
this is a job for mark or someone more experienced than me srry
but in game what problem do you have
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
sometimes it takes a while, depending on scene complexity. The game freezes a bit, but it keeps processing stuff and creates a 1kb placeholder capture.usd file that if you wait a bit, it might get filled soon
okay
thanks
im trying to use usd create to help with my efforts in making far cry 1 rtx
Yup, it is the recommended tool we have atm. It is not designed to work with remix stuff, since the runtime is very different than USD Composer. Folks at nvidia are working on a toolkit to better integrate everything together and we're all waiting for it. For now, it is a very manual process
im more or less using it to add more prominet rtx lighting
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
When two people who don't know a lot about create and remix start arguing about replacements.
I'm sorry that 3 dots in a message annoys you??? I'm being sarcastic, you can't tell me what to type lmaoo
I'm just basing my knowledge off of things I've seen people do, I could very well be wrong and I probably am! But I most likely don't know that
How to fix error: Status: Status Missing?
But I don't like pestering people 24/7, so I try to limit the amount of things I ask
Don't post like this again please. Infuriating
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).
Oh ty very much, that's pretty helpful
And to reiterate-- you will not get Omniverse provided materials to work in Remix. It can't be done, it's not compatible.
It would be nice if it did tho tbh
But ig maybe in the future it might be made compatible
.
where are you getting his error?
It sounds like the red banner at the bottom left, which just means there's no status included in the USDA.
Then what to do?
(
customLayerData = {
string remix_replacement_status = "Release Ready"
}
}
)```
i think this can be added to the mod.usda to fix it?
Ill try
Well, i think it works now, thx
but lights still dont appear
which game?
Wolfenshtein Return to the Castle
#1096847508002590760 message
make sure you're adding this line underneath each added light
otherwise it'll be invisible
can you send your mod.usda?
iirc they have to be dds files
well then i convert them
yes
it looks like you were changing some instances instead of materials
there's no pngs specified in your mod.usda file
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
I was deleting some alpha mess
OH
sorry
i sent you wrong mod.usda
this one
Well it looks a bit worse, when i convert it
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
Yep that worked
Thanks
@rare gull for some reason Composer wont provide me to save usda
when i make changes
right click mod.usda and save
I overwrite it and everything were reseted...
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
Someone know why when i trying to apply PBR on texture, in game base texture dissapear and there only normal and rough?
You might need to copy the original texture into your mod folder and reassign the albedo to it.
Like mods folder?
Your replacements folder
Ah maybe i get it
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
Yep it worked, thx (Even so i understand what to do by watching one video)
Does anyone know a good method for replacing models?
top pin in the channel
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
mm i love discord failing to embed
those should cover it though
yes. my tool converts most meshes to be compatible, but you still need to triangulate the meshes first in a tool like Blender
my mesh would be made in blender, so thats not an issue
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 
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
You know what WOULD be nice
The damn creator toolkit
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
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
Blender has a built in script editor, so it's always possible to just tell people to run the script in blender
I've had to do that a few times, for converting and processing files.
yeah, that's very possible
can somebody how to setup replacement textures
my bad
can somebody give me a video on model replacment
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
Yea I was gonna but part of it would be installing python and I barely comprehend it myself
I could do the bit after installing python and the USD library but but no one's getting past that part without code knowledge
Uhm USD library doesn't support latest version of python I remember.
Requires: Python >=3.6, <3.11
Yea had to use an old version to get it to work.
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
Oh yea it's easy to run but I had a hard time getting set up didn't I.
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
Has anyone done much mesh replacements? Because I want to know what you use for recreating them
I've been doing quite a few recently. Which aspect exactly you're looking for?
In a nutshell:
- I use the blender from omniverse launcher built specifically to deal with USD files, and export the meshes using these settings from the pic
- USD Composer to setup the mesh's materials
- A python script bound to the right click menu to fix that vertex interpolation problem
where is the python script?
here mate
How can i make a certain part of a texture reflective in my case a puddle?
with metallic and roughness maps
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?
No sorry you'll have to use traditional modding tools to do the ui
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 ๐ ๐ฆ
I don't think it would be that hard to implement texture replacements for the pass-through draw calls (the ones that get passed throught to dxvk's d3d9 rasterer). Probably something we'd accept as a community contribution if someone uploaded an MR that did it cleanly.
sRGB is a correction for textures that represents colors. normal maps in general (including octahedral), are raw data, not colors. they shouldn't be using any sRGB settings
@fair helm Do Portal material-shader work outside of the Portal game ?
This is a child mesh inside the mesh usda
yes, but you'd need to correctly mark 2 textures that only show up once per frame as the two portals
What might be causing the issue above
USD Composer displays that material red, the properties menu works (I think this means the syntax is correct)
USD composer isn't going to do the portals right.
do you have another mesh using a material with portal_index set to 0?
This one is 0 there is another one on the front that has the index 1
And you should bring over the textures that Portal uses for its materials, at least until you customize it to something else
Oh that might be the issue
Yes but at least that means it got the material right (I was using a text editor for that)
Do you see any other issues here
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
On my way
Btw I get this errors on the console with mine.
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
But it doesn't throw that error with Portal's replacements.usda
There is no such material file
those are valve's model files.
When you take a capture, the game will create some AperturePBR_BLAH.mdl files in the capture folder
Here is the video
I don't remember if the AperturePBR_Portal.mdl file is copied there, but it should be
Everything searches systemwide, there is no such file :/
looks like whatever you have that anchored to might be culling
is there an aperturePBR_opacity.mdl?
and have you taken a capture?
Yes
I tried with multiple games
There is no AperturePBR_Portal.mdl file saved anywhere
Also other games has exact same issues
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.
Uhm I was planning to use portals on replacement meshes ๐ฆ
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
yeah, based on the code here
https://github.com/NVIDIAGameWorks/dxvk-remix/blob/main/src/dxvk/rtx_render/rtx_scene_manager.cpp#L519
I don't think making a replacement mesh as a portal will work right now, as line 532 wouldn't run on it.
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)
Yes that kinda fixed the issue
Without that config it'll still appear glitch
Unfortunately, not at all
Should I open an issue for this?
Yeah, that'd be a good idea.
Thank you for your time ๐
Thank you for spending time playing with Remix ๐
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 ๐
@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.
Good to hear you figured it out! The 45 degree rotate + scale thing is because normals only use 1 hemisphere ( a normal pointing into the material doesn't make any sense physically). So we can double our precision by only specifying half the sphere.
You should post this (including that video) to the issue. It's much easier for me to get other engineers to look at the github issues than to try to copy discord conversations over to our internal slack channels
It's definitely doing something with the textures... but I suspect some step is still not set up or initilized.
So it is supposed to work on mesh replacements?
Because without adding this to the config, portals on regular materials wasn't functional as well
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" },
Uhm no
These doesn't seem like the rtx.conf's syntax
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
Uhm how I am supposed to put this? rtx.rayPortalModelNormalAxis", "1.0, 0.0, 0.0"
Like rtx.rayPortalModelNormalAxis = 1.0, 0.0, 0.0 ?
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
Unfortunately it makes no difference :/
I will try with a different game
just to make sure
hmm, bummer, I'd have thought rtx.rayPortalEnabled would make a big difference :/
could you attach your <game_name>_d3d9.log file?
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.
hmm, yeah, I though it would be bc7
also what is this ๐ warn: [SecretReplacement] Could not find stage: rtx-remix\mods\gameReadyAssets\./SubUSDs/SM_Prop_CompanionCube_Lens.usd
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
Oh what
I used relative paths: ./SubUSDs/textures/portalMask.dds
Oh damn this is not mod.usda
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
Yea didn't realized that ๐
Still the same :/
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?
There is no reloading of rtx.conf right?
Gotta check real quick
I don't see anything in the UI code, so probably not.
Y
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
Still the same :/
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
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
Even they are not present in the game?
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..
They are totally white now, I think that's a progress ๐
Hmm, I will try that as soon as I have time
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)
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 ๐๐ฆ
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.
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 ๐
you still need to convert to USD, you just don't need to run a custom script to change the interpolation and do triangulation
Can i do that in omniverse now?
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)
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
it wasn't right coming out of blender either - it needed a custom script either way
I'll give it a go ๐
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
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
Adam hooked me up, got it working now, kind of? Doesn't look like it does in the editor but it does function
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
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
that's mostly a difference of exposure. Play with the camera settings and those will probably be much closer to eachother
Aaah is auto exposure on by default?
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
Hmm yeah that certainly gets me closer by still incredibly different, especially with how the lights themselves are actually casting!
Oh well, this is a decent step one at least hah
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
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
You can increase the roughness, and for now just wack the metalness up, it's only temporary
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.
You beautiful people, love it.
@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)
So by 255 highest, you mean 255 won't be affected by depth, right?
Like 255 will be level with the geo
255 is the original geo surface, yes
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.
Right
That awesome
looks great mate, works perfectly ๐
Thats fucking awesome... we need to implement that in NFSU2 RTX Remix @shut rampart @lament knoll @flat ginkgo
it looks a little bit too... smooth? something looks off. maybe it's just the height map
but i'm excited regardless
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
its a smooth wall
maybe it just looks off because of the harsh transition between the ground and wall then
ah well. it still looks good regardless
Could be that the POM has no self shadowing either
Or does it, I can't tell, just woke up
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)
so basically he needs better normal maps xD
Or I just need to make our POM algorithm better. It's pretty basic right now
I'll take another look at it's normal map this evening
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
that looks really good imo
What'd you make the heightmap with?
Photoshop , drew around the bricks ๐
Not bad
Can you post the diffuse and normal textures?
png prefered
I want to try something
Actually
Just the normal map might work
one sec, i'll upload the lot
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
From the pic it seems ogl
oh sorry was muchin' my lunchin'
yea its dx
made in sustance sampler
what are you trying to do @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
ah right, is there something you can do with the normal map? seeing how it's coming from U and V directions?
Do what?
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
Well, i just use Materialize for height map... can also create smoothnes/roughness maps but these are bad. Normal maps can work fine
quixel suite!
Thats what u use?
No just just being silly
I donโt think quixel can even generate materials from images like sampler or materialize.
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
Its now capable of generating curvature/cavity maps? That is pretty cool. One thing that made me give up trying it a while ago was the need to bake somehow that info from whatever DCC I was using
Yeah and no, it can give you a curvature to work from if you give it an input mesh
But an actual baked one will usually give you a better result
Teddy always seemed nice on polycount back in the day.
There are definitely things to respect about him!
Is it how the man works a cap
Tell you what if we had a library of scans remixing would fly
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
And I bet you can't slap them in a mod and share em either
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
Anything I've made at work belongs to the studio
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
Ah I see, neato
You seen William fulchers latest video? Church scan. Looks sick, lots of mega stuff
Yeah for sure! Super gorgeous! Although we're getting pretty #offtopic now haha
Oh oops
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
I tried setting my sky mesh as sky and didn't change anything. Not sure it is the intention, but it is still being rendered as a big emissive dome bouncing rays on the scene and such, not as "miss rays", which drops performance considerably
From a quick glance, it looks like the sky logic all exists before replacements are applied, so adding the sky flag to a replacement probably isn't going to do anything. terrain is probably in a similar state.
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?
yes, if everything works proper. this is largely untested though
Oh exciting. You here that @snow lagoon got your decals after all ๐
Heck yeah, I saw! Excited to try it!
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
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
some textures in HL2 use detail textures, which are shader-dependent and Remix doesn't know what to do with them. you should add these to your "ignore textures" list in the alt x developer menu
not 100% sure if that's what's happening here but it has been the cause of issues before for me
Wish there's an easy way to globally disable them
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.
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
Seems about right. Just ignore the error and keep going
"Alert", not error
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
Judging by the alert, you might've pointed to a prim that isn't defined in the grass_small_01.usd file
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
Is there like a more precise tutorial somewhere cuz I really don't get what i'm supposed to do
No need to change any paths, just open you grass usd file in OV, right click the top most root prim and click "Set as Default Prim" or something like that
Then back on your capture scene, just leave that Prim Path field in the reference block as <Default Prim> as is rn
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
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
Oh btw in the omniverse extension repo I've opened a feature request about if it could warn the user if absolute paths exist (like C:\Game\rtx-remix..)
Ok i found my problem, the asset I use need to be only one mesh file in USD Composer, but now how do I transform something like this to something that would work ?
Oh, nice, thanks 
Also i can't move the asset ? It works in USD Composer but don't change IG, any idea anyone?
It is hard to say. Judging just by the hierarchy view it should be alright. Maybe the Lambert material you're using isn't using the AperturePBR_Opacity.mdl file as a shader. Remix doesn't work with any mdl material, it must be either that opacity one I mentioned, or its translucent variation
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
If you made your changes in a inst_HASH object, then it has no effect in game, they're only instances to spawn your asset (mesh_HASH) in the scene to rebuild the game scene. Remix only allows you to modify assets, not instances.
You can see that every inst_HASH object references a mesh_HASH one
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
Uh a feature request, not a pull request : (
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
Any idea ? Or any more info needed to fix this ?
Maybe you forgot to assign the material to the mesh
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
ok i'll try this thanks
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
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
I'll check in a sec
Thanks man
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 
