Stable diffusion에 대한 동영상 가이드를 만들고 있습니다.

https://www.youtube.com/watch?v=vv52GrT6Bjc

 

https://www.youtube.com/watch?v=OdYWGL2qreM

 

 

https://www.youtube.com/watch?v=bb6v1ynImfE

 

https://www.youtube.com/watch?v=T2nIEzNAAWo

 

https://www.youtube.com/watch?v=Gc2MWI8a55I

 

'AI' 카테고리의 다른 글

회사 프로젝트 : 원화  (0) 2024.06.10
Leonardo.Ai  (0) 2023.05.19
로고 만들기 (stable-diffusion-webui)  (0) 2023.04.28
여자 히어로 (stable-diffusion-webui)  (0) 2023.04.13
여자모델 (stable-diffusion-webui)  (0) 2023.04.05

여러 가지 문제를 해결하기 위해서 개발하면서 아트 쪽 이슈를 해결하기 위해서 이것저것 툴을 계속 만들다 보니 어느새 꽤 많이 쌓였군요.

이번에 애니메이션쪽 이벤트관련하여 너무 많은 리소스가 있어서 불필요한 이벤트를 삭제해야 하는데, 일일이 손으로 할려니 놓치는 것이 꽤 많더군요.

불필요한 이벤트를 애니메이션에서 삭제할 수 있도록 검색하는 툴을 오랜만에 추가했습니다.

ChatGPT를 이용하니 1시간도 안걸리는군요.

예전 같으면 하루종일 구글 뒤적거리면서 코드 짜는데 이틀은 걸렸을 텐데...

 

 

Stable Diffusion으로 다양한 학습 방법을 시도하였고, 원하는 스타일로 안착이 되었습니다.

다른것보다 학습시키는 시간이 인내의 시간이었네요. 학습 방법에 대한 가이드가 많지 않고 정해져있는 방식이 아니다보니, 100번도 넘게 재학습 시키고 테스트했던거 같습니다.

'AI' 카테고리의 다른 글

Stable diffusion 처음 사용자를 위한 기초  (0) 2024.07.01
Leonardo.Ai  (0) 2023.05.19
로고 만들기 (stable-diffusion-webui)  (0) 2023.04.28
여자 히어로 (stable-diffusion-webui)  (0) 2023.04.13
여자모델 (stable-diffusion-webui)  (0) 2023.04.05

몇 달간 계속 Stable Diffusion을 공부하였습니다.

미션은 내부 원화를 AI 제작을 하도록 하는 미션이었습니다.

이게 제대로 된 로직을 찾기가 참 쉽지 않더군요.

아마도 현재 학습에 성공하신 분들은 아시겠지만, 이게 케이스바이케이스고 결국 노우하우일 수밖에 없다는 생각이 들더군요.

수차례에 실험을 반복해야 하고 끈기와 시간이 필요한 작업이었습니다.

아래는 저희가 목표로 하는 원화 스타일이었습니다.

 

 

아래는 중간과정인데, 얼추 비슷한 느낌이 들었지만 원화와는 목표했던 바와는 다르다는 느낌이더군요.

 

아래는 현재 여러방식을 사용해 낸 결과입니다. 나름 안착을 한듯합니다.

 

Stable Diffusion에 각종 에러와 버전과 정말 온갖 고충이 있던 거 같습니다.

어찌 되었던 결과에 다다르고 있어서 나름 만족스러운거 같습니다.

'업무일지' 카테고리의 다른 글

업무일지<Tool>  (0) 2024.06.27
업무일지 <HDRP를 URP로 변경중>  (0) 2024.03.27
업무일지 <WebGL과 WebGPU>  (0) 2024.03.13
업무일지 <HDRP -> URP로 컨버팅중>  (0) 2024.03.08
업무일지 <그래픽 오류를 찾아라>  (0) 2024.02.19

PC 기반의 게임을 모바일로 옮기고 있습니다.
HDRP는 아직 모바일이 지원되지 않아 URP로 셰이더를 변경을 하고 있는 중입니다.
최대한 HDRP의 느낌을 살리려고 하고 있어서 비교샷을 한번 준비해 봤습니다.
진행중긴 한데, HDRP가 그림자의 깊이감과 전반적인 컬러감이 좋습니다.

회사에서 기존 게임을 웹으로 개발이 가능한지 문의하였습니다.

저의 5년 전 기억으로는 포퍼먼스 문제가 많아 그리 녹녹하지 않았던 기억이라 일단은 좋지 않을 거라고 이야기는 했습니다.

그리고 다시 한번 WebGL이 어느정도 발전되었는지 알아보았습니다.

1년 전쯤에 WebGPU라는 새로운 API가 나왔고  WebGL의 후속 모델이고 많은 그래픽적인 향상이 있었던 거습니다.

 

웹게임은 일단 단독으로 실행이 되는 런처가 아니라 웹브라우저를 기반으로 사용하는 거라 제약적인 부분이 많이 있다고 알고 있습니다.  그래서 메모리를 얼마나 효과적으로 쓰느냐가 관건인 걸로 기억합니다.

 

웹 게임을 좀 찾아보았는데, 꽤 퀄리티 있게 만든 게임이 있더군요.

https://miniroyale.io/ 

 

Mini Royale: Nations

Battle for control of different nations with your Clan and become an economic or military superpower. Proudly made by Faraway

miniroyale.io

 

제가 처음에 개발했을 때는 모바일게임의 초창기 모습이랑 비슷하였는데, 지금은 좀 더 진전이 있는 거 같아 보입니다.

 

크롬 브라우저도 WebGPU를 지원한다고 했으니, 조만간 웹 3D게임에 큰 발전이 있을 거 같은 생각이 드네요.

그리고 유니티도 2023 이후 버전에 WebGPU를 넣을 생각인듯합니다.

Reflection Probes를 사용하는 이유는 캐릭터 같은 동적인 오브젝트가 반사를 사용이 필요할때 사용하는데, 이것이 중요한 게임이 있을 수 있습니다.

모바일에서는 필요하지 않다면 쓸 이유는 없어 보이는군요.

HDRP개발된 게임을 모바일 서비스를 준비하기 위해서 URP로 컨버팅 작업을 진행하고 있었습니다.

 

처음에는 유니티 HDRP에서 Vulkan이 지원한다기에 요즘 모바일 기기에서는 Vulkan이 지원되기 때문에 Vulkan을 이용하여 HDRP를 그대로 모바일로 컨버팅을 시도했는데, 실제 Vulkan으로 하면 "지원하지 않습니다."라고 나옵니다.

Vulkan이 나온 지 10년이 가까이 되고 있는데, 아직까지는 모바일게임에 쓰는 데는 어려움이 있나 봅니다.

 

결국 포기하고 URP로 컨버팅을 하고 있습니다. 그래도 예전 유니티버전에 비해서 편리한 점이 셰이더가 HDRP에서 URP로 컨버팅이 비교적 쉽기 때문에 일부 설정만 좀 수정하면 무리 없이 변경이 가능해서 그리 어려움은 없는 거 같습니다.

하지만, 게임이 개발된 베이스가 HDRP다 보니 HDRP관련 코드가 게임 안에 많이 존재하여 이 부분은 클라이언트 지원을 받아서 진행하고 있습니다. 카메라 스크립트에서 HDRP 관련 오류가 많아 작업이 좀 지연되고 있습니다.

 

 

 

게임은 런칭이 되었고, 뭐 그럭저럭 진행되고 있습니다.

라이브라 그래픽 업무는 다소 줄어들었습니다. 아울러 TA 업무가 많이 줄어든 게 느껴집니다.

이미 해결할일들은 대부분 해결하였기 때문일 겁니다.

TA가 라이브에 바쁘다는 건 큰 문제가 발생한 것일 겁니다.

 

그래서 버그를 열심히 찾고 있습니다. 계속 인지하고 있지만, 아무도 원인을 못찾고 있는 치명적이진 않으나 가끔 나타나는 문제가 있습니다. 순간적으로 UI를 제외한 모든 오브젝트가 안보이는 상황이 발생하였는데, 정확한 원인을 못밝혔습니다.

엄밀말하면, 클라쪽에서 봐야할 문제로 여겨지는데 비교적 여유로운 제가 보고 있습니다.

 

UI만 보인다는건 카메라가 오브젝트를 그리지 못하거나, 무언가 가려졌다는 뜻인데...아무리 봐도 UI에서 설정한 Fade될때 까맣게 되는 설정문제인거 같은데... 확실한 증거를 못찾았습니다.

코드에도 이게 호출되는건 처음 한번이라 다시 호출될일이 없습니다.

그래서 일단 Fade라는 놈이 발생될때 로그가 남도록 코드를 넣어놨는데... 안나오는군요... 워낙 불규칙하게 나왔던 문제라... 

 

 

'업무일지' 카테고리의 다른 글

업무일지 <WebGL과 WebGPU>  (0) 2024.03.13
업무일지 <HDRP -> URP로 컨버팅중>  (0) 2024.03.08
업무일지 <Mipmap을 제어>  (0) 2023.12.01
업무일지 <메모리 테스트>  (0) 2023.11.20
업무일지 <점검툴>  (0) 2023.11.16

예전부터 계속 알아봤던 것중 하나는 Mipmap 제어를 수동으로 할수 있느냐 였습니다.

최근에, 방법을 알게되었는데, 전에 분명히 한번쯤 본거 같네요. 이걸 그때는 그냥 지나쳤던거 같습니다.

 

Mipmap 제어를 카메라에 넣어서 코드로 구현이 가능하다는걸 알았는데...

되긴하는데... 이게 엄청난 포퍼먼스가 먹는군요.

그냥 Mipmap 범위를 수정하고 싶었는데... 이게 계속 update에서 돌고 있어서 엄청난 과부하가 됩니다.

방법은 알았으나... 쓸수 없는 기술이라니...

더보기
using UnityEngine;

public class MipmapController : MonoBehaviour
{
    public Camera mainCamera; // 메인 카메라
    public float thresholdDistance = 10f; // 거리 임계값
    public float nearBias = 0f; // 가까울 때의 Bias 값
    public float farBias = 1f; // 멀 때의 Bias 값

    void Update()
    {
        // 모든 Renderer 컴포넌트를 찾습니다
        Renderer[] renderers = FindObjectsOfType<Renderer>();

        foreach (Renderer rend in renderers)
        {
            // Renderer에 적용된 모든 Material을 순회합니다
            foreach (Material mat in rend.materials)
            {
                // Material에 적용된 모든 Texture를 순회합니다
                foreach (string textureName in mat.GetTexturePropertyNames())
                {
                    Texture texture = mat.GetTexture(textureName);
                    if (texture != null)
                    {
                        // 카메라와의 거리를 계산합니다
                        float distance = Vector3.Distance(mainCamera.transform.position, rend.transform.position);

                        // 거리에 따른 Mipmap Bias를 설정합니다
                        if (distance <= thresholdDistance)
                        {
                            texture.mipMapBias = nearBias;
                        }
                        else
                        {
                            texture.mipMapBias = farBias;
                        }
                    }
                }
            }
        }
    }
}

 

 

그러고보면 유니티 내부에 있는 Mipmap 기능은 정말 뛰어난 기능이라는 생각이 들더군요. 부하없이 된다는게 정말 대단한 기술이라는 생각이 들긴합니다.

 

'업무일지' 카테고리의 다른 글

업무일지 <HDRP -> URP로 컨버팅중>  (0) 2024.03.08
업무일지 <그래픽 오류를 찾아라>  (0) 2024.02.19
업무일지 <메모리 테스트>  (0) 2023.11.20
업무일지 <점검툴>  (0) 2023.11.16
업무일지 <Test용 이동>  (0) 2023.10.30

상해팀에서 medium에서 FULL Texture를 쓰는것이 어떠냐고 제안이 왔습니다.

저희가 초반에 작업했을때 이미지가 많은 메모리를 가지고 있어서 medium에서 Textue를 half로 설정을 게임을 진행해 왔습니다.

 

워낙 오래전에 셋팅한 값이라 다시 테스트를 진행하였습니다.

 

A는 Full Teuxture고 B는 Half입니다. 그래픽쪽 메모리가 역시나 300에서 500메가 늘어나는걸 확인하였습니다.

하지만 저희가 원하는 그래픽카드의 VRAM은 4GB 1.15정도를 쓴다고 해서 문제가 될건 없는거 같습니다.

그래서 결론은 Full Texture를 적용해보기로..

'업무일지' 카테고리의 다른 글

업무일지 <그래픽 오류를 찾아라>  (0) 2024.02.19
업무일지 <Mipmap을 제어>  (0) 2023.12.01
업무일지 <점검툴>  (0) 2023.11.16
업무일지 <Test용 이동>  (0) 2023.10.30
업무일지<프로파일러 보는 방법>  (0) 2023.10.27

개발이 막바지에 이르고 있고, 최근에 만들어 놓으면 누군가 수정해서 변경이 되고, 또 누군가 건드려서 수정이 되는 등...

없던 그래픽 버그가 자꾸 발생하여, 이를 보완할 툴을 제작하고 있습니다.

몇 가지 체크사항을 리스트화하여 Editor로 잘못되어 있는걸 최종에서 한번 더 점검할 수 있는 구조를 만들고 있습니다.

코드가 길어지니... 점점 ChatGPT 의존적으로 되어가는군요... 코딩 능력이 점점 떨어지는 게 느껴지는데... 그걸 ChatGPT가 보완해주고 있습니다. ChatGPT가 없으면 이제 일이 힘들군요... 세상이 바뀌고 있다는 게 실감이 난다는..

골치 아픈건 ChatGPT에게 맡기고 창의적인 생각쪽으로...

 

더보기

대충 이런 툴이다. 

TA로 일하다 보니 느끼는 건데, 이런 관리 툴들을 꽤 만드는 거 같습니다.

'업무일지' 카테고리의 다른 글

업무일지 <Mipmap을 제어>  (0) 2023.12.01
업무일지 <메모리 테스트>  (0) 2023.11.20
업무일지 <Test용 이동>  (0) 2023.10.30
업무일지<프로파일러 보는 방법>  (0) 2023.10.27
업무일지<Animation 기능 추가>  (0) 2023.10.25

캐릭터가 순간 이동시에 문제되는 부분이 있어서 이를 테스트 하기 위해서 따로 코드를 만들었습니다.

캐릭터 이동을 단축키를 써서 이동하도록 구성했네요.

move script

오브젝트를 여러개 만들어서 순환 이동을 하게 만들어 봤습니다.

문제점이 잘 보이는군요. 해결 방법도 보이는거 같습니다.

move sample

 

'업무일지' 카테고리의 다른 글

업무일지 <메모리 테스트>  (0) 2023.11.20
업무일지 <점검툴>  (0) 2023.11.16
업무일지<프로파일러 보는 방법>  (0) 2023.10.27
업무일지<Animation 기능 추가>  (0) 2023.10.25
업무일지 <alpha 버그>  (0) 2023.10.04

유니티 프로파일러

Unity 프로파일러의 타임라인에서 각 컬러는 특정 작업 또는 작업 범주를 나타냅니다. 주어진 이미지에 기반하여, 컬러별로 주요 작업을 나열하면 다음과 같습니다:

 

초록색: 렌더링 (Rendering)

하늘색: 스크립트 (Scripts)

주황색: 물리 (Physics)

연한 청록색: 애니메이션 관련 작업 (Animation)

올리브색: 가비지(Garbage Collector)
노란색: VSync

붉은색: 글로벌 (Global Illumination)
보라색: UI 작업 (UI)

올리브색(?): 기타(Others)

 

전체적으로 해석하자면, 스크립트 > 기타 > 애니메이션 >= 랜더링 순으로 비중이 높은걸 알수 있습니다.

 

 

'업무일지' 카테고리의 다른 글

업무일지 <점검툴>  (0) 2023.11.16
업무일지 <Test용 이동>  (0) 2023.10.30
업무일지<Animation 기능 추가>  (0) 2023.10.25
업무일지 <alpha 버그>  (0) 2023.10.04
업무일지 <HDRP에 MainTex 관련 버그>  (0) 2023.09.27

애니메이터분들이 아웃게임 파트의 애니메이션을 볼 만한 적당한 기능이 없어 작업을 추가하였습니다.

문제는 기존 애니메이션 툴이 인게임 전용으로 만들어져 있다 보니, 약간에 고민이 되었습니다.

하여, 아웃게임 애니메이션을 확인할때는 인게임이 작동하지 않는 구조로 구성하였습니다.

(말은 거창하지만 그냥 온/오프)

 

그래서 버튼이 비활성화되는 구조의 스크립트를 추가하였습니다.

 

#if UNITY_EDITOR // 빌드시 영향이 없게 유니티에서만 돌아가게 하면 좋다.

public class PlayAnimation : MonoBehaviour
{
    private Animator animator;
    public Button[] targetButtons;  // 여러 버튼을 이 배열에 연결

    private void Awake()
    {
        animator = FindObjectOfType<Animator>();
    }

    private void Start()
    {
        // 시작할 때 MainTest 오브젝트가 존재하는지 확인
        if (GameObject.Find("MainTest") != null)
        {
            // MainTest 오브젝트가 존재하면 모든 버튼을 비활성화
            foreach (Button btn in targetButtons)
            {
                btn.gameObject.SetActive(false);
            }
        }
    }
    
    #endif

 

 

'업무일지' 카테고리의 다른 글

업무일지 <Test용 이동>  (0) 2023.10.30
업무일지<프로파일러 보는 방법>  (0) 2023.10.27
업무일지 <alpha 버그>  (0) 2023.10.04
업무일지 <HDRP에 MainTex 관련 버그>  (0) 2023.09.27
업무일지 <캐릭터 땀>  (0) 2023.09.06

High Definition RP version 12.1.7 에는 alpha 버그가 있습니다.

Shader Graph로 제작할 때 처음 알파값에 0 이하값이 들어가면 Shader가 무슨 이유인지 그 뒤로 알파가 안 되는 버그를 가지고 있습니다.

 

그래서 처음에 커스텀 셰이더를 제작 시에 알파부터 0 이하로 세팅이 되지 않도록 세팅을 하고 저장을 하면 그 뒤로 0을 넣어도 문제가 안 생깁니다.

HDRP alpha 버그

 

알고 있던 버그인데 까먹어서 다시 한참을 헤매었네요.

'업무일지' 카테고리의 다른 글

업무일지<프로파일러 보는 방법>  (0) 2023.10.27
업무일지<Animation 기능 추가>  (0) 2023.10.25
업무일지 <HDRP에 MainTex 관련 버그>  (0) 2023.09.27
업무일지 <캐릭터 땀>  (0) 2023.09.06
업무일지 <DLSS>  (0) 2023.08.23

이번에 캐릭터에 있는 투명 파이프를 표현하기 위해서 셰이더를 제작하였습니다.

헌데, 빌드전에는 에러가 없었는데, 화면에 그림은 제대로 그리면서 빌드하면 셰이더가 에러가 납니다.

빌드시 나는 에러는 대략 _MainTex가 없다는 메세지 였습니다.

_MainTex가 필요 없어서 만들지 않고 컬러만으로 조정해야하는 셰이더인데... 이게 왜 빌드시 문제가 되는지...

그래서 별 쓸모는 없지만, _MainTex관련 노드를 추가하였더니, 에러가 사라졌군요.

유니티 버전 2021.3.5f1을 사용하는데 _MainTex가 대부분 셰이더에 들어가서 몰랐는데, 없으면 에러가 나는 버그가 있군요.

더보기

Depth Write를 이용하면 버블이 카메라 위치에 따라 생겼다가 없어졌다 하는 효과가 있습니다.

'업무일지' 카테고리의 다른 글

업무일지<Animation 기능 추가>  (0) 2023.10.25
업무일지 <alpha 버그>  (0) 2023.10.04
업무일지 <캐릭터 땀>  (0) 2023.09.06
업무일지 <DLSS>  (0) 2023.08.23
업무일지 <애니메이션 타임슬라이더>  (0) 2023.08.09

캐릭터의 땀을 표현하는 노드를 구성중입니다.

문제는 이미 상당히 많은 캐릭터가 만들어져 있고, 캐릭터 얼굴의 UV 위치가 서로 다르기 때문에 캐릭터마다 텍스쳐를 한 장씩 추가한다는 건 좀 무리일 수 있습니다.

그러면, 어떻게 하면 한장의 텍스쳐로 처리할 수 있을까? 고민을 하였습니다.

그러다가 문득 생각이 들었습니다. 땀을 이루는 텍스쳐는 어차피 smoothness를 lerp처리할 것인데 캐릭터의 바디의 위치에 맞춰 텍스쳐의 Offset을 이동하여 조종하면 어떤가라는 생각이 들었습니다.

이 방법이 맞았습니다. 물론 UV에 따라 크고 작고 그런점이 있긴 하지만, 대략적으로 맞출 수 있을듯하네요.

시간에 따라 땀이 점점 발생하도록 구성하였습니다.

 

초기 HDRP 테스트했을 때 나라카가 DLSS을 사용하여 효과를 냈다는 글을 보고 저사양에서 테스트했었는데, 프레임 효과는 있지만, 품질이 좋지 않아서 포기했었습니다.

근데, 최고사양에서 최고 퀄리티인데 특정 맵에서 해상도가 2048로 플레이하면 프레임이 50 프레임대로 떨어진다고 하여 이 문제를 DLSS로 해결하는 게 어떤가라는 생각이 들어 테스트해보았습니다.

사실, DLSS은 오늘 3.5버전을 발표하였습니다. 이걸 보고 다시 한번 테스트하게 된 것인데 결론은.. 실패...

DLSS는 쉽게 이야기하면 원래 해상도가 2048인 모드에서 1024 이미지를 2048로 기술적으로 뻥튀기시키서 2048로 만들어서 포퍼먼스를 개선시키는 기능입니다.
업스케일이라고도 하는데 NVIDIA만 되는 AI 기술(?)이라고 합니다.

하여간... 테스트 하였는데, 숲이라 알파가 많은 오브젝트에서는 번짐 현상이 심하고 지글거림이 발생하여 포퍼먼스가 문제가 아니라 퀄리티가 떨어져서 다시 보류하였습니다. 제가 잘 몰라서 이런 결과가 나온 건지는 모르겠습니다만... 아직은 범용적인 기술도 아니라서 일단은 보류하기로...

애니메이션이 너무 빨라 리깅에 문제가 있는지 알수가 없는경우가 있어서 애니메이션 테스트 툴에 속도를 조종하는 스크립트를 추가하였습니다. (과거에는 이거 하나 넣는데 엄청난 시간을 들였을건데... GPT형이 너무 고마워...)

 

using UnityEngine;
using UnityEngine.UI;

public class TimeScaleHandler : MonoBehaviour
{
    // 게임 속도를 변경하려는 원하는 값으로 설정
    public float desiredTimeScale = 0.5f;
    public Slider timeScaleSlider; // UI 슬라이더 참조

    private void Start()
    {
        // 시작할 때, 원하는 시간 흐름 속도로 변경
        Time.timeScale = desiredTimeScale;
        timeScaleSlider.value = desiredTimeScale; // 슬라이더 초기값 설정

        // 슬라이더의 값을 변경할 때 발생하는 이벤트를 연결
        timeScaleSlider.onValueChanged.AddListener(OnTimeScaleChanged);
    }

    // 이벤트가 발생 했을 때 호출되는 이벤트 핸들러
    private void OnTimeScaleChanged(float value)
    {
        Time.timeScale = value;
    }
}

'업무일지' 카테고리의 다른 글

업무일지 <캐릭터 땀>  (0) 2023.09.06
업무일지 <DLSS>  (0) 2023.08.23
업무일지 <처음 설치하고 젠킨스 빌드시 확인해야할것>  (0) 2023.08.04
업무일지 <젠킨스 svn에러>  (0) 2023.08.03
업무일지 <Vulkan>  (0) 2023.08.02