daz3d / DazToC4D

Daz to Cinema 4D Bridge
https://www.daz3d.com/daz-to-cinema-4d-bridge
Other
29 stars 11 forks source link

[Redshift] Bump/Normal Issues #4

Closed xanathon closed 3 years ago

xanathon commented 3 years ago

I am using it on C4D R21 with Redshift.

There are multiple problems.

The bump strength is set to 0.05, that is way too small, 0.5 would be way better.

Normal Maps are plugged into a bump node, that is correct, but in the node the bump type is incorretly set to "height map" instead of "tangent space normal". That is extremely annoying, since one has to correct that in each and every shader which can be a lot of work. This is not understandable anyway, since it is a very basic Redshift setting and was implemented completely wrong, probably because of a lack of understanding how bump works in Redshift.

samjay3d commented 3 years ago

We will look into this. The current team working on this bridge is different so, thank you for bringing this up to use I will take a look at this when I can.

xanathon commented 3 years ago

I reported this MONTHS ago in the DAZ forum and you have the audacity to tell me you will look into this when you have time, instead of giving concise feedback after ignoring this issue for days?

samjay3d commented 3 years ago

This issue has been fixed and will be able to be accessible from Develop now.
https://github.com/daz3d/DazToC4D/tree/develop

xanathon commented 3 years ago

I looked into the code and saw no indication that the map type dropdown in the bump node for a normal texture is now selected correctly as "tangent space normal". You should AT LEAST wait for confirmation that it works before you close the issue.

samjay3d commented 3 years ago

NodeBump[c4d.REDSHIFT_SHADER_BUMPMAP_INPUTTYPE] = 1

Line 478

This will change it to Tangent Space Normal

xanathon commented 3 years ago

478 in latest commit 6fa9f82 reads:

nodeShaderBumpInput = RShader.AddPort(c4d.GV_PORT_INPUT,

So I cannot confirm that.

How do you differentiate between normal and bump input textures? Just to set everything to "tangent space normal" will not solve the problem.

samjay3d commented 3 years ago

My apologies line 470 will be the line I showed above.

In most cases, you should be getting the normal map instead of the bump map. This is a temporary solution as we work on redesigning parts of the code. I can reopen this issue if you like but, this will be the solution short term.

xanathon commented 3 years ago

So as I said: This is not a solution. Now you set it to "tangent space normal" even if it is a grayscale bump texture, right?

If this is the case this issue should be reopened as the problem was not solved.

Solution would be:

Just changing it to always being set as "tangent space normal" creates the same problem with bump maps that before existed with normal maps. That definitely is not a solution, not even a workaround.

You need to ascertain what kind of texture is in the original exported fbx model, a bump or a normal. And then set the texture type accordingly in the bump node. If this is not done this issue is not solved.

Edit: What you say about "normal map in most cases" is untrue and not realistic, as especially in older models are no normal maps, only bump maps. And still these older models are shown as "compatible with the C4D bridge" in the shop. If this does not work this information is misleading and may even be willful deception of customers.

samjay3d commented 3 years ago

I reopened the issue. This update is still in the development tree for a reason. Like I said though it is a short-term solution if you need to get the normal maps loaded through the script.

Thank you for the info though. The bridges are not a 100% conversion at this point and are made as a way to save time overall. I understand your point and we are definitely going to add this as a proper fix in the near future.

xanathon commented 3 years ago

This could be easily solved via the UI.

Add a checkbox or dropdown to select bump or normal. That way you would not need to detect the bump type via code, just let the user select, the user knows what type of resource is in the exported file.

So add a dropdown or checkbox to the UI where you additionally can select bump or normal and set the c4d.REDSHIFT_SHADER_BUMPMAP_INPUTTYPE accordingly. Easy to implement. Instant win.

samjay3d commented 3 years ago

https://github.com/daz3d/DazToC4D/tree/develop

Added it the way you recommended sorry for the wait.

There are other options the code is currently manually inputting. I am working on a way to get that data from Daz but, anything else that would help save you time that you would like access for?

xanathon commented 3 years ago

Is it enough to just copy over the new C4D plugin o do I need to install the DAZ plugin also? I am reluctant to reinstall the DAZ plugin with the DAZ install manager as that would again overwrite my directory structure. There was absolutely no feedback from DAZ about that grave problem.

Aside from that: translucent materials are created completely wrong for Redshift (and thus are not translucent), but I'll have to look into that and will start a new issue about it when I have details.

samjay3d commented 3 years ago

You will need to update the Daz side as there was some issue I had to fix on that end for morphs and some directories changes. And awesome thanks for looking into it.

Here I created a video to help with my explanation but, these are the steps. https://www.dropbox.com/s/h0upi564xd6mucc/How%20to%20Add%20DazScript%20from%20GitHub.mp4?dl=0

  1. Download the zip file from GitHub of the newest version. Make sure you grab from the develop branch or if you set up the branch on your pc with git or GitHub Desktop if you know how.

  2. In the Daz Studio folder go to the end of the directory and grab the DazScript file.

  3. Open up Daz Studio and select your Content library.

  4. Select Daz Studio Formats and Right click My Daz Library and go click Browse to Folder Location.

  5. You may not have a Scripts folder if you don't that's fine just create a new folder and Copy the Daz to Cinema 4D.dsa.

  6. Go back to Daz Studio and open up the Scripts folder.

  7. From there right click the script and go create a custom action. I would recommend adding it in a subitem so its easier to keep separate when u update from the GitHub side.

  8. If these steps are follow then u can have both versions on your computer.

samjay3d commented 3 years ago

Have you had a chance to test this? Curious if this current workaround worked as you expected?

xanathon commented 3 years ago

The DAZ installation you described is so cumbersome that I did not find the time to do this so far. In addition I would no longer be able to use the export button and that breaks my workflow.

The WAY better way would be if DAZ repairs the blatantly wrong installation process that overwrites symlinks.

xanathon commented 3 years ago

Is it possible to overwrite the original DAZ installed file inside DAZ studio, and if yes: how? I would greatly prefer that to adding another instance of the script.

samjay3d commented 3 years ago

C:\Program Files\DAZ 3D\DAZStudio4\scripts\support\DAZ

This is where the Daz To C4D.dsa is installed. You can replace it there but, just make sure you don't apply any updates Install Manager Recommends.

xanathon commented 3 years ago

Thanks