Get it on Google Play


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

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

Recent Comment

Archive


2024. 1. 20. 14:37 게임/VRChat

 

 

 

 

이건 개 쓰레기라서 가능하면 쓰면 안 된다

근데 입이 아닌 코등의 다른 부위를 움직여서 하는건 ㄱㅊ

 

 

이게 좋음

 

 

 

 

 

 

'게임 > VRChat' 카테고리의 다른 글

텍스처 메모리와 성능과의 연관성  (0) 2024.02.27
부스 출시전 검토 사항  (0) 2024.01.13
VRChat 아바타 업로드 2023  (0) 2024.01.02
posted by 모카쨩
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

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


저사양 유저용 블로그 진입