How to render ultra-realistic looking models and textures in Blender? [closed]

I know I know, I sculpt a model, bake the textures >apply them and that’s it.

Come on, that can not be everything when it comes to ultra-realistic 3d models.

I have seen guys creating textures with applying 102381028310 stuff, like sub-surface scattering, then some extra layers of textures, once zoomed in, a user can see more textres that are like small and normally not rendered from far away.

Can you just make a list of such things that would not be included in the >bake them, difuse, AO, spec normal maps> apply them and that’s it.

So any extra technique that you know, please post it. Yes I know lightning is important but that is a whole different question. haha I probably sound a little bit irritated in this question, that is because I already asked in like 5 forums and no one is able to tell me some of the other techniques or whatever, so that I know where to expand my knowledge.

Rendering overlapping normal map textures to a 2d scene efficiently

I am using modern OpenGL to render a 2D non grid/tiled world map. I’ve generated some simple normal map textures to render over the base world map to provide terrain elevation/detail shading. Terrain is not tiled (triangulated from noise), so the majority of these terrain elevation features can overlap. This is good as it gives a more continuous appearance to mountains etc.

However the normal map shader needs to sample the base terrain color and apply the lighting value to it before returning the output color. So I can’t render two overlapping normal textures without the second ‘cutting out’ the first where they overlap (the second texture render cannot see the output of the first).

My solution to this was to use a 3 pass render to texture via FBO. I attempt to divide the normal textures destination locations into 3 non overlapping groups and render 1 group in each pass. This works to a point, but of course where a texture overlaps more than 3 neighbours the cut out problem remains.

I could just increase the number of passes/groups to 4, 5, 6… and perhaps this will resolve most cut out issues. While this would probably still provide reasonable performance on my system I am guessing there is a limit where integrated graphics cards may struggle.

Is there an alternative solution for this that could scale better to lower end systems? Or is perhaps even a 5 or 6 pass full-screen render viable on even integrated graphics these days?

Note:

The first render pass draws the entire 2D scene (minus terrain shading) and is obviously the slowest, but it happens only once. The remaining passes make a screen size copy of the previous pass to a second texture (rendering to a screen sized quad) and then render normal textures to this copy using the first texture as input. Adding more passes would only repeat the screen sized texture copy and normal texture rendering.

Using several render textures at the same time during runtime

I want to achieve a system where I can use render textures as portraits/icons. So when I select something I want to show it in my UI, currently I do:

  1. Spawn my prefab with the model (I have one of these prefabs for each model), in my case this prefab has a camera (for render texture), a model, and a spotlight.
  2. Show this render texture in my UI

This is fairly straight forward when I only need one render texture at a time. But say I select a house and want to see all residents, now I need 6-10 render textures all showing different models.

Should I create/destroy render texture assets at runtime for this type of feature, since each camera would need its own render texture? Im worried its an expensive feature that costs more than its worth perhaps.

Or do I need to create one render texture asset for each model in my game, and simply point to it in the prefab mentioned above?

Is there a smarter way?

How to decide sprite size for isometric tile textures?

enter image description here

I want to draw isometric tiles with arbitrary tile sizes. For example above picture there are 1×1 and 3×2 sized tiles.

The textures have arbitrary height because of decoration. a is the tile’s height b is texture’s height c is tile’s width. I can’t figure out what the sprite size should be when I lay these out on screen.

Maybe I should have exact tile sizes cover the whole texture without decorations (a == b). But still what the sprite size should be?

Exporting models from Crocotile3D to Unreal Engine 4 (.obj). Texures are always blurry. I want crisp, clean textures

Can anyone help me? I am exporting models with textures (.obj) from Crocotile3D to Unreal Engine 4. I want them to be crisp and clear, as in the left image (Crocotile editor), but only get blurry, as in the right image (Unreal editor). Whether I export the model at scale x 1 or greater doesn’t make any difference. My textures are 16×16 pixels.

I have watched endless videos and tinkered with settings but been stuck for two days. Any help or advice will be much appreciated!

Crocotile3D,, Unreal Editor, Crocotile Eport Settings

Assign 100 materials of different shaders with their respective 2D textures to one shader automatically?

Is there an editor script to assign all materials to one shader specifically including copying the texture? I have found an editor script that changes the shader but does not copy its texture. How can I achieve this?

using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEditor;   public class MAT_Change : MonoBehaviour {     [MenuItem("Editor/Material/Change Shader to ShaderTest")]     static void Change1()     {         Shader newshader = Shader.Find("Custom/ShaderTest" );         ChangeShaders(newshader);     }       static Object[] GetSelectedMaterials()     {         return Selection.GetFiltered(typeof(Material), SelectionMode.DeepAssets);     }         static void ChangeShaders(Shader newShader)    {       int counter = 0;        if (Selection.objects.Length > 0)         {             Object[] materiales = GetSelectedMaterials();             if (materiales.Length > 0)             {                 foreach( Material mat in materiales )                 {                       mat.shader = newShader;                     counter++;                 }              }         }       EditorUtility.DisplayDialog( "Message", "materials changed: " + counter, "OK" );    } }  

c++ SDL2 : can’t load textures to the game

iam making a game with SDL and c++ iam trying to render simple image to the screen but i can’t i don’t know why iam not getting any ERROR but i see only black screen here is my code

game.h

#ifndef GAME_H #define GAME_H  #include <SDL2/SDL.h>  #include <iostream>   using namespace std;     class game {  public:      game();     ~game();      void init(char *title,int xpos, int ypos ,int xsize ,int ysize ,bool fullscreen);     void loop();     void input();     void update();     void render();     SDL_Renderer* renderer;     SDL_Window* window;    private:       const int target_Fps = 60;     const float TFEF = 1000/60; // time for each frame     int delta;     long int start_time;     bool isrunning = true;     int fps_counter = 0;     unsigned int counter = 1;    };  #endif 

game.cpp

#include "game.h"  #include "player.h"  player* pla;  game::game() {     cout << "something"<<endl;     if (SDL_Init(SDL_INIT_EVERYTHING) == 0)     {         cout << "another thing" << endl;          init("game",10,15,500,500,false);     }  loop(); }  game::~game() {  }  void game::init(char *title,int xpos, int ypos ,int xsize ,int ysize ,bool fullscreen) {      window = SDL_CreateWindow(title, xpos,  ypos , xsize , ysize , fullscreen);     renderer = SDL_CreateRenderer(window,-1,0);     //SDL_SetRenderDrawColor(renderer, 0, 0,0, 255);     SDL_RenderClear(renderer);     SDL_RenderPresent(renderer);      cout << "another another something" << endl;       pla = new player(renderer,32,32);     pla->init();        //SDL_Texture* tex = IMG_LoadTexture(renderer,"res/pss.png");    }  void game::loop() {      while(isrunning) {     start_time = SDL_GetTicks();      input();      update();      render();      delta = SDL_GetTicks() - start_time;     if (delta < TFEF)         SDL_Delay(TFEF - delta);      fps_counter++;      if (start_time >= 1000 * counter)     {         //cout <<"the FPS is : "<< fps_counter << endl;         counter++;         fps_counter = 0;      }       }  }  void game::input() {     SDL_Event e;     SDL_PollEvent(&e);     if (e.type == SDL_QUIT)         SDL_Quit();  }  void game::update(){}  void game::render() {      SDL_RenderClear(renderer);      pla->render(renderer);      SDL_RenderPresent(renderer); }   gameobject::~gameobject(){};  

player.h

#ifndef PLAYER_H #define PLAYER_H  #include "gameobject.h"    class gameobject;  class player : public gameobject {   public:      void init() override;     void tick() override;     void render(SDL_Renderer* renderer) override;     SDL_Renderer* renderer;     player(SDL_Renderer* renderer,int pwidth,int pheight); private:      ~player() override;     SDL_Texture* playertex;     };      #endif // PLAYER_H 

player.cpp

#include "player.h"  player::player(SDL_Renderer* renderer,int pwidth, int pheight) {   this->pos.w = pwidth;  this->pos.h = pheight;  this->pos.x = 0;  this->pos.y = 0;    this->renderer = renderer;     }  void player::init() {      this->playertex= IMG_LoadTexture(renderer,"res/pss.png");     cout<<"int in player \n"<<endl;      crop.x = 0;     crop.y = 0;     crop.w = 32;     crop.h = 32;      cout<<"pos x :"<<this->pos.x<<endl;     cout<<"pos y : "<<this->pos.y<<endl;     cout<<"pos w : "<<this->pos.w<<endl;     cout<<"pos h : "<<this->pos.h<<endl;     cout<<"crop x :"<<this->crop.x<<endl;     cout<<"crop y :"<<this->crop.y<<endl;     cout<<"crop w :"<<this->crop.w<<endl;     cout<<"crop h : "<<this->crop.h<<endl;   }  void player::tick() {  }  void player::render(SDL_Renderer *renderer) {  /*     cout<<"pos x :"<<this->pos.x<<endl;     cout<<"pos y : "<<this->pos.y<<endl;     cout<<"pos w : "<<this->pos.w<<endl;     cout<<"pos h : "<<this->pos.h<<endl;     cout<<"crop x :"<<this->crop.x<<endl;     cout<<"crop y :"<<this->crop.y<<endl;     cout<<"crop w :"<<this->crop.w<<endl;     cout<<"crop h : "<<this->crop.h<<endl; */  SDL_RenderCopy(renderer,playertex,&crop,&pos); }   player::~player(){};  

here is my files

enter image description here

Blender Poliigon Addon error when loading textures

So I just installed the Poliigon material addon to Blender 2.8 Beta, and when I click on the materials folder, it shows all the textures as a picture, not like the sphere that I have selected. Then when I click load material, it gives me an error that I cant decipher. Help is much appreciated.

And since I need at least 10 rep to post images, and blender doesn’t let me copy and paste it’s errors, I guesss I’ll try and summarize the error.

Traceback (most recent last call):    File: "C:\etc...addons\poliigon-material-converter\poliigon)ops_props.py", line 429, in execute conform uv=pmcs.conform_uv    File: "C:\etc...scripts\modules\ops.py" line 200_call_ret = op_call((self.idname_py(), None, kw)    Runtime Error: Error: Traceback (most recent last call):    File: "C:\etc...addons\polligon-material-converter\poliigon_ops_props.py" line 551, in execute status, material = workflow.build_material_from_set(context,set_path)    File: "C:\etc...addons\polligon-material-converter\poliigon_ops_props.py" line 570, in build_material_from_set self.build_material(contect, files=set_files)    File "C:\etc...addons\poliigon-mateiral-converter\poliigon_converter.py" line 626, in build_material setattr(node,key,value)    AttributeError: 'ShaderNodeTextImage' object has no attribute 'color_space'  location C:\etc...Blender 2.8\blender-2.800-git.(a long hexadecimal)-windows64.80\scripts\modules\bpy\ops.py:200\  location: <unknown location>:-1 

Well that was fun to type out.

Black and white textures load as turquoise?

I have some black and white, and some grayscale textures, that are loading in unity as turquoise and white textures. What is causing this and how can I fix this? Also, can somebody verify that I am supposed to load roughness textures into the “Metallic” slot of the Standard shader? That feels so weird. I was using Principled Shader in Blender to make the original materials. **EDIT: “Autodesk Interactive” shader has a “Roughness” input but most of my roughness textures and some b&w textures are still turquoise, what is happening…

enter image description here