Get it on Google Play


Wm뮤 :: '분류 전체보기' 카테고리의 글 목록 (22 Page)

블로그 이미지
가끔 그림그리거나 3D모델링하거나
취미로 로봇만드는
전자과 게임프로그래머 (퇴사함)
2022.3.22f1 주로 사용
모카쨩
@Ahzkwid

Recent Comment

Archive


2024. 1. 19. 10:43 3D/블렌더

 

 

 

MMD 쉐이프키 모음

사진은 내가 만들었던 캐릭터인 클로버로 찍었다

말이 MMD 쉐이프키지 현재 3D 캐릭터 시장을 혼자 독주하는 마당이라 세계표준이 되었다

 

 

 

 

 

Basis

기본

 

 

 

 

 

Ah

 

 

 

Huh

 

 

 

 

There

 

 

 

Your

 

 

 

 

 

Cormorant

 

 

 

 

8

이건 mmd아니고 오리지널이였던거같음.

걍 내가 만든 쉐이프키 정리할겸 넣음

 

 

 

 

Wa

 

 

 

What

 

 

~

 

 

 

A laugh

笑い

눈웃음

 

 

 

 

 

><

><

일본어는 전각으로 쳐야한다

 

 

 

scorn

 

 

 

 

 

 

 

Tooth and eyes

じと目

경멸하는눈

 

 

 

 

Small

瞳小

작은 눈동자

 

 

 

 

Where

にこ

입웃음

 

 

Blink

まばたき

 

 

 

 

 

Wink

ウィンク

윙크

 

Wink right

ウィンク右

윙크 오른쪽

 

 

Wink 2

ウィンク2

윙크 2

일본어일 경우 숫자는 전각이다

 

 

 

Wink 2 right

ウィンク2右

일본어일 경우 숫자는 전각이다

 

Tears

なみだ

 

Be troubled

困る

곤란한

 

 

 

anger

怒り

영어일경우 소문자로 쳐야한다

 

 

 

 

blush

이 쉐이프키가 MMD에 있었는지 기억이 안난다 없었을수도 있음

 

Eye round and eyes

ぐるぐる目

빙글빙글 눈

 

Marble white eye

丸白目

둥근백안

 

Shiitake

しいたけ

 

 

Tongue

이거도 오리지널 표정이다

 

 

 

なごみ

Howawa

ㅡㅡ 눈

클로버에는 저 표정 없어서 만들었던 곰돌이 표정으로 대체함

 

 

 

그리고 그 외

 

 

 

Muu

 

 

 

A lump

にこり

 

 

Blue fade

 

 

이외에도 더 있는데 내가 필요할때 정리함

 

posted by 모카쨩
2024. 1. 18. 13:59 Unity

 

Matcap

일반 쉐이더 라이팅과 달리 이미 구워진 정보를 쓰므로 비교적 균일하게 그림자를 생성해주는 장점이 있다.

응용해서 금속효과등도 리플렉션에 영향받지 않고 적용되도록 가능

 

리플렉션 맵과 거의 비슷하지만 전방위를 베이크해야해서 만들기 어려운 리플렉션맵과 달리 정면사진만을 원하기 때문에 만들기 쉽다.

단점은 위에서 보면 렌더가 제대로 안 된다

 

 

 

 

다음과 같이 조명 설정

 

 

 

 

 

 

스피어를 만들어서 정면에서 찍고 잘라내면 끝

 

 

아니면 현실 사진 써도 된다

 

 

 

 

 

 

 

 

 

 

 

'Unity' 카테고리의 다른 글

유니티 모델 임포트 에러  (0) 2024.02.24
에셋스토어 업로드 거부사례 모음  (0) 2023.11.27
에셋스토어 업로드 2023  (0) 2023.11.21
posted by 모카쨩
2024. 1. 15. 22:58 윈도우폼

 

 

 

 

 

 

system.windows.forms.datavisualization

을 쳐서 설치

 

 

 

 

 

그리고 왠지 Form1이 이런 에러 뜨면서 닫혔다

 

 

 

업데이트 하면 고쳐진다

 

 

 

 

 

 

 

 

 

 

 

 

설치 끝

 

 

아래는 내가 자주 쓰는 차트 코드들이다

 

 

 

마우스 댄 곳의 차트값 표시

 

V1

V1은 특정 차트만 사용한다

더보기
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart1, e);
}
private void chart2_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart2, e);
}
private void chart3_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart3,e);
}

DataPoint prePoint = null;
ToolTip tooltip = new ToolTip();
private void DrawChartValue(Chart chart, MouseEventArgs e)
{
    HitTestResult result = chart.HitTest(e.X, e.Y);
    if (result.PointIndex < 0)
    {
        return;
    }
    if (chart.Series.Count==0)
    {
        return;
    }
    if (result.PointIndex >= chart.Series[0].Points.Count)
    {
        return;
    }
    {
        var dataPoint = chart.Series[0].Points[result.PointIndex];
        var date = DateTime.FromOADate(dataPoint.XValue);
        var value = dataPoint.YValues[0];

        var text = $"Date: {date.ToShortDateString()}\nValue: {value.ToString("F2")}";
        if (tooltip.GetToolTip(chart) != text)
        {
            tooltip.AutoPopDelay = 60*1000; //60초
            tooltip.SetToolTip(chart, text);
        }
        if (prePoint != dataPoint)
        {
            if (prePoint != null)
            {
                prePoint.MarkerStyle = MarkerStyle.None;
            }
            prePoint = dataPoint;
            dataPoint.MarkerStyle = MarkerStyle.Circle;
            dataPoint.MarkerSize = 8;
            dataPoint.MarkerColor = System.Drawing.Color.Red;
        }
    }
}

 

V2 모든 차트 사용

더보기
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart1, e);
}
private void chart2_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart2, e);
}
private void chart3_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart3,e);
}

DataPoint prePoint = null;
ToolTip tooltip = new ToolTip();
private void DrawChartValue(Chart chart, MouseEventArgs e)
{
    if (chart.Series.Count == 0)
    {
        return;
    }
    var result = chart.HitTest(e.X, e.Y);
    //var result = HitTestX(chart,e);
    if (result.PointIndex < 0)
    {
        return;
    }
    if (result.Series==null)
    {
        return;
    }
    if (result.PointIndex >= result.Series.Points.Count)
    {
        return;
    }
    {
        var dataPoint = result.Series.Points[result.PointIndex];
        var date = DateTime.FromOADate(dataPoint.XValue);
        var value = dataPoint.YValues[0];

        var text = $"{result.Series.Name}\nDate: {date.ToShortDateString()}\nValue: {value.ToString("F2")}";
        if (tooltip.GetToolTip(chart) != text)
        {
            tooltip.AutoPopDelay = 60*1000; //60초
            tooltip.SetToolTip(chart, text);
        }
        if (prePoint != dataPoint)
        {
            if (prePoint != null)
            {
                prePoint.MarkerStyle = MarkerStyle.None;
            }
            prePoint = dataPoint;
            dataPoint.MarkerStyle = MarkerStyle.Circle;
            dataPoint.MarkerSize = 8;
            dataPoint.MarkerColor = System.Drawing.Color.Red;
        }
    }
}

 

 

 

V3

가로축만 사용하는 검색기를 만들었다

근데 만들고보니까 V1보단 낫지만 V2가 더 유용한듯

더보기
private void chart1_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart1, e);
}
private void chart2_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart2, e);
}
private void chart3_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(chart3,e);
}

DataPoint prePoint = null;
ToolTip tooltip = new ToolTip();
private void DrawChartValue(Chart chart, MouseEventArgs e)
{
    if (chart.Series.Count == 0)
    {
        return;
    }
    //var result = chart.HitTest(e.X, e.Y);
    var result = HitTestX(chart,e);
    if (result.PointIndex < 0)
    {
        return;
    }
    if (result.Series==null)
    {
        return;
    }
    if (result.PointIndex >= result.Series.Points.Count)
    {
        return;
    }
    {
        var dataPoint = result.Series.Points[result.PointIndex];
        var date = DateTime.FromOADate(dataPoint.XValue);
        var value = dataPoint.YValues[0];

        var text = $"{result.Series.Name}\nDate: {date.ToShortDateString()}\nValue: {value.ToString("F2")}";
        if (tooltip.GetToolTip(chart) != text)
        {
            tooltip.AutoPopDelay = 60*1000; //60초
            tooltip.SetToolTip(chart, text);
        }
        if (prePoint != dataPoint)
        {
            if (prePoint != null)
            {
                prePoint.MarkerStyle = MarkerStyle.None;
            }
            prePoint = dataPoint;
            dataPoint.MarkerStyle = MarkerStyle.Circle;
            dataPoint.MarkerSize = 8;
            dataPoint.MarkerColor = System.Drawing.Color.Red;
        }
    }
}
public static HitTestResult HitTestX(Chart chart, MouseEventArgs e)
{
    var hitTestResult = new HitTestResult();

    var chartArea = chart.ChartAreas[0];
    chartArea.CursorX.SetCursorPixelPosition(new Point(e.X, e.Y), true);
    var result = chart.HitTest(e.X, e.Y);
    if (result.ChartArea == null)
    {
        return hitTestResult;
    }
    var xValue = chartArea.AxisX.PixelPositionToValue(e.X);

    foreach (var series in chart.Series)
    {
        for (int i = 1; i < series.Points.Count; i++)
        {
            if ((series.Points[i-1].XValue + series.Points[i].XValue) / 2 < xValue)
            {
                continue;
            }
            hitTestResult.Series = series;
            hitTestResult.PointIndex = i-1;
            return hitTestResult;
        }
    }

    return hitTestResult;
}

 

 

 

V4

V2를 더욱 개량하여  단일 함수, 단일인자로 통합시킴

prams가 들어가서 필요하다면 V2에 쓰이던 시스템과 호환도 가능하다

https://gist.github.com/ahzkwid/6b5502e408914dac8fd5b5668489a73f

 

WindowsForms/DrawChartValue

WindowsForms/DrawChartValue. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

public Form1()
{
    InitializeComponent();

    foreach (var chart in Charts)
    {
        chart.MouseMove += charts_MouseMove;
    }
}

private void charts_MouseMove(object sender, MouseEventArgs e)
{
    DrawChartValue(Charts);
}
Chart[] Charts
{
    get
    {
        return new Chart[] { chart1, chart2, chart3 };
    }
}
DataPoint prePoint = null;
ToolTip tooltip = new ToolTip();
private void DrawChartValue(params Chart[] charts)
{

    Chart chartMain = null;
    var mousePosition = Point.Empty;
    foreach (var chart in charts)
    {
        mousePosition = chart.PointToClient(MousePosition);
        if (chart.ClientRectangle.Contains(mousePosition))
        {
            //차트 내부인지 검사절차를 거치지 않으면 다른 이벤트와 충돌 가능성이 있다
            chartMain = chart;
            break;
        }
    }
    if (chartMain == null)
    {
        return;
    }

    {
        var chart = chartMain;



        if (chart.Series.Count == 0)
        {
            return;
        }


        var result = chart.HitTest(mousePosition.X, mousePosition.Y);
        //var result = HitTestX(chart,e);
        if (result.PointIndex < 0)
        {
            return;
        }
        if (result.Series == null)
        {
            return;
        }
        if (result.PointIndex >= result.Series.Points.Count)
        {
            return;
        }
        {
            var dataPoint = result.Series.Points[result.PointIndex];
            var date = DateTime.FromOADate(dataPoint.XValue);
            var value = dataPoint.YValues[0];

            var text = $"{result.Series.Name}\nDate: {date.ToShortDateString()}\nValue: {value.ToString("F2")}";
            if (tooltip.GetToolTip(chart) != text)
            {
                tooltip.AutoPopDelay = 60 * 1000; //60초
                tooltip.SetToolTip(chart, text);
            }
            if (prePoint != dataPoint)
            {
                if (prePoint != null)
                {
                    prePoint.MarkerStyle = MarkerStyle.None;
                }
                prePoint = dataPoint;
                dataPoint.MarkerStyle = MarkerStyle.Circle;
                dataPoint.MarkerSize = 8;
                dataPoint.MarkerColor = System.Drawing.Color.Red;
            }
        }
    }
}

 

 

 

 

 

차트 XY커서 표시

https://gist.github.com/ahzkwid/10152f22ad3a05879a90ebe0367b6b49

 

WindowsForms/DrawCursors

WindowsForms/DrawCursors. GitHub Gist: instantly share code, notes, and snippets.

gist.github.com

 

public Form1()
{
    InitializeComponent();

    chart1.MouseMove += charts_MouseMove;
}
private void charts_MouseMove(object sender, MouseEventArgs e)
{
    DrawCursors(Charts);
}
Chart[] Charts
{
    get
    {
        return new Chart[] { chart1, chart2, chart3 };
    }
}
void DrawCursors(params Chart[] charts)
{
    Chart chartMain = null;
    var mousePosition = Point.Empty;
    foreach (var chart in charts)
    {
        mousePosition = chart.PointToClient(MousePosition);
        if (chart.ClientRectangle.Contains(mousePosition))
        {
            //차트 내부인지 검사절차를 거치지 않으면 다른 이벤트와 충돌 가능성이 있다
            chartMain = chart;
            break;
        }
    }
    if (chartMain == null)
    {
        return;
    }

    {
        var chart = chartMain;
        var result = chart.HitTest(mousePosition.X, mousePosition.Y);
        if (result.ChartArea == null)
        {
            return;
        }
    }


    //X커서 표시(실수)
    {
        var chart = chartMain;
        var x = mousePosition.X;
        x = Math.Min(x, chart.Width - 20);
        x = Math.Max(0, x);
        double xValue = chart.ChartAreas[0].AxisX.PixelPositionToValue(x);
        chart.ChartAreas[0].CursorX.Position = xValue;
    }



    //Y커서 표시(실수)
    {
        var chart = chartMain;
        var y = mousePosition.Y;
        y = Math.Min(y, chart.Height - 20);
        y = Math.Max(0, y);
        double yValue = chart.ChartAreas[0].AxisY.PixelPositionToValue(y);
        chart.ChartAreas[0].CursorY.Position = yValue;

    }


    var xPosition = chartMain.ChartAreas[0].CursorX.Position;
    //X커서 복제
    foreach (var chart in Charts)
    {
        chart.ChartAreas[0].CursorX.Position = xPosition;
    }
}

 

 

 

'윈도우폼' 카테고리의 다른 글

윈폼 TTS  (0) 2024.07.31
윈도우용 대화형 프로그램 설정  (0) 2023.09.26
윈폼 오류 모음  (0) 2023.07.25
posted by 모카쨩
2024. 1. 15. 11:09

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2024. 1. 14. 02:55 3D/블렌더

 

 

 

시작트윗

https://twitter.com/ahzkwid/status/1741934144698155212

 

X의 ahzkwid💮님(@ahzkwid)

클로버랑 키가 딱 맞아서 가슴만 조정하니까 입혀짐

twitter.com

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted by 모카쨩
2024. 1. 13. 09:01

보호되어 있는 글입니다.
내용을 보시려면 비밀번호를 입력하세요.

2024. 1. 11. 21:00 3D/블렌더

 

 

 

 

modifier cannot be applied to a mesh with shape keys

때문에 다 병합한채로 쉐이프키 만들텐데 섭디비전 없이 만드는건 존나 어렵다

 

애드온을 쓰는 방법도 있는데 그건 나중에 소개하고 수동으로 병합하는 방법을 소개하겠다

 

 

 

 

 

다음과 같은 모델이 있다

해당 모델은 총 두개가 필요하다

 

 

적용 안 된거랑 적용된거해서 Shape Keys의 갯수만큼 만든다

그리고 한개는 Basis를 먼저 지워서 모디파이어 적용시키고

다른 한개는 Long을 먼저 지워서 모디파이어를 적용시킨다

그리고 로컬좌표를 따라가기 때문에 오브젝트좌표는 아무데나 둬도 된다

 

 

마지막으로 모두 선택하되 베이스가 될 모델을 제일 마지막에 선택한 후에 Join as Shapes 하면 끝

 

'3D > 블렌더' 카테고리의 다른 글

ピンクセーラー 작업일지  (0) 2024.01.14
광어회 모델링 하는법  (0) 2023.12.08
블렌더 가장자리만 선택  (0) 2023.12.07
posted by 모카쨩
2024. 1. 10. 17:19 사용설명서

 

 

 

컴퓨터에 추가로 SSD 추가를 해도 내컴퓨터에 보이지 않는다

추가설정을 해줘야 한다

 

 

먼저 시작메뉴를 우클릭해서 디스크 관리에 들어간다

 

 

 

GPT로 설정

 

 

 

 

우클릭하여 '새 단순 볼륨' 선택

 

 

 

 

 

 

HDD인지 SSD인지 적고 숫자만으로 날짜를 쓴다.

가급적 띄어쓰기나 기호같은건 넣지 말자.

HDD인지 SSD인지 모르면 SSD이다.

 

 

 

 

'사용설명서' 카테고리의 다른 글

오프너 사용설명서  (0) 2024.01.29
유니티 디스코드 화면공유 방법  (0) 2023.11.14
공구 자료 모음  (0) 2023.11.01
posted by 모카쨩

저사양 유저용 블로그 진입