kelpnet의 작법 8
개요
나는 켈프넷의 방법을 조사했다.
선로를 추적해 보세요.
나는 운전을 해 보았다.
결과
몇 번을 하든지 간에 두 개의 각을 통해 아웃해야 한다.마물이 살고 있다.
예제 코드 using UnityEngine;
using KelpNet;
using System;
public class pc3 : MonoBehaviour
{
[SerializeField]
private Camera dispCamera;
[SerializeField]
private SpriteRenderer bod;
[SerializeField]
public float val;
private Texture2D tex0;
Function testnn;
void Start()
{
var tex = dispCamera.targetTexture;
tex0 = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
testnn = ModelIO.Load(Application.dataPath + "/test.nn");
}
void Update()
{
var tex = dispCamera.targetTexture;
Texture2D tex1 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex2 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex3 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex4 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex5 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
float v1;
float v2;
float v3;
float v4;
float v5;
RenderTexture.active = dispCamera.targetTexture;
tex0.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
tex0.Apply();
tex1.ReadPixels(new Rect(10, 200, 40, 40), 0, 0);
tex1.Apply();
tex2.ReadPixels(new Rect(60, 200, 40, 40), 0, 0);
tex2.Apply();
tex3.ReadPixels(new Rect(110, 200, 40, 40), 0, 0);
tex3.Apply();
tex4.ReadPixels(new Rect(160, 200, 40, 40), 0, 0);
tex4.Apply();
tex5.ReadPixels(new Rect(210, 200, 40, 40), 0, 0);
tex5.Apply();
val = Sense(tex0);
v1 = Sense(tex1);
v2 = Sense(tex2);
v3 = Sense(tex3);
v4 = Sense(tex4);
v5 = Sense(tex5);
Real[] s = new Real[] {
v1,
v2,
v3,
v4,
v5
};
NdArray res = testnn.Predict(s)[0];
float x = 0;
float y = 0;
if (res.Data[0] > res.Data[1] && res.Data[0] > res.Data[2])
{
y = Time.deltaTime * 0.5f;
}
if (res.Data[1] > res.Data[0] && res.Data[1] > res.Data[2])
{
x = Time.deltaTime * -50.0f;
}
if (res.Data[2] > res.Data[0] && res.Data[2] > res.Data[0])
{
x = Time.deltaTime * 50.0f;
}
transform.Rotate(0, 0, x);
transform.Translate(0, y, 0);
Sprite spr = Sprite.Create(tex0, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f));
bod.sprite = spr;
}
private float Sense(Texture2D tex)
{
var cols = tex.GetPixels();
var avg = new Color(0, 0, 0);
foreach (var col in cols)
{
avg += col;
}
avg /= cols.Length;
return avg.grayscale;
}
}
이상
Reference
이 문제에 관하여(kelpnet의 작법 8), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/bb766bd7737df711acc8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
몇 번을 하든지 간에 두 개의 각을 통해 아웃해야 한다.마물이 살고 있다.
예제 코드 using UnityEngine;
using KelpNet;
using System;
public class pc3 : MonoBehaviour
{
[SerializeField]
private Camera dispCamera;
[SerializeField]
private SpriteRenderer bod;
[SerializeField]
public float val;
private Texture2D tex0;
Function testnn;
void Start()
{
var tex = dispCamera.targetTexture;
tex0 = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
testnn = ModelIO.Load(Application.dataPath + "/test.nn");
}
void Update()
{
var tex = dispCamera.targetTexture;
Texture2D tex1 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex2 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex3 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex4 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex5 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
float v1;
float v2;
float v3;
float v4;
float v5;
RenderTexture.active = dispCamera.targetTexture;
tex0.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
tex0.Apply();
tex1.ReadPixels(new Rect(10, 200, 40, 40), 0, 0);
tex1.Apply();
tex2.ReadPixels(new Rect(60, 200, 40, 40), 0, 0);
tex2.Apply();
tex3.ReadPixels(new Rect(110, 200, 40, 40), 0, 0);
tex3.Apply();
tex4.ReadPixels(new Rect(160, 200, 40, 40), 0, 0);
tex4.Apply();
tex5.ReadPixels(new Rect(210, 200, 40, 40), 0, 0);
tex5.Apply();
val = Sense(tex0);
v1 = Sense(tex1);
v2 = Sense(tex2);
v3 = Sense(tex3);
v4 = Sense(tex4);
v5 = Sense(tex5);
Real[] s = new Real[] {
v1,
v2,
v3,
v4,
v5
};
NdArray res = testnn.Predict(s)[0];
float x = 0;
float y = 0;
if (res.Data[0] > res.Data[1] && res.Data[0] > res.Data[2])
{
y = Time.deltaTime * 0.5f;
}
if (res.Data[1] > res.Data[0] && res.Data[1] > res.Data[2])
{
x = Time.deltaTime * -50.0f;
}
if (res.Data[2] > res.Data[0] && res.Data[2] > res.Data[0])
{
x = Time.deltaTime * 50.0f;
}
transform.Rotate(0, 0, x);
transform.Translate(0, y, 0);
Sprite spr = Sprite.Create(tex0, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f));
bod.sprite = spr;
}
private float Sense(Texture2D tex)
{
var cols = tex.GetPixels();
var avg = new Color(0, 0, 0);
foreach (var col in cols)
{
avg += col;
}
avg /= cols.Length;
return avg.grayscale;
}
}
이상
Reference
이 문제에 관하여(kelpnet의 작법 8), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ohisama@github/items/bb766bd7737df711acc8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
using UnityEngine;
using KelpNet;
using System;
public class pc3 : MonoBehaviour
{
[SerializeField]
private Camera dispCamera;
[SerializeField]
private SpriteRenderer bod;
[SerializeField]
public float val;
private Texture2D tex0;
Function testnn;
void Start()
{
var tex = dispCamera.targetTexture;
tex0 = new Texture2D(tex.width, tex.height, TextureFormat.ARGB32, false);
testnn = ModelIO.Load(Application.dataPath + "/test.nn");
}
void Update()
{
var tex = dispCamera.targetTexture;
Texture2D tex1 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex2 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex3 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex4 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
Texture2D tex5 = new Texture2D(40, 40, TextureFormat.ARGB32, false);
float v1;
float v2;
float v3;
float v4;
float v5;
RenderTexture.active = dispCamera.targetTexture;
tex0.ReadPixels(new Rect(0, 0, tex.width, tex.height), 0, 0);
tex0.Apply();
tex1.ReadPixels(new Rect(10, 200, 40, 40), 0, 0);
tex1.Apply();
tex2.ReadPixels(new Rect(60, 200, 40, 40), 0, 0);
tex2.Apply();
tex3.ReadPixels(new Rect(110, 200, 40, 40), 0, 0);
tex3.Apply();
tex4.ReadPixels(new Rect(160, 200, 40, 40), 0, 0);
tex4.Apply();
tex5.ReadPixels(new Rect(210, 200, 40, 40), 0, 0);
tex5.Apply();
val = Sense(tex0);
v1 = Sense(tex1);
v2 = Sense(tex2);
v3 = Sense(tex3);
v4 = Sense(tex4);
v5 = Sense(tex5);
Real[] s = new Real[] {
v1,
v2,
v3,
v4,
v5
};
NdArray res = testnn.Predict(s)[0];
float x = 0;
float y = 0;
if (res.Data[0] > res.Data[1] && res.Data[0] > res.Data[2])
{
y = Time.deltaTime * 0.5f;
}
if (res.Data[1] > res.Data[0] && res.Data[1] > res.Data[2])
{
x = Time.deltaTime * -50.0f;
}
if (res.Data[2] > res.Data[0] && res.Data[2] > res.Data[0])
{
x = Time.deltaTime * 50.0f;
}
transform.Rotate(0, 0, x);
transform.Translate(0, y, 0);
Sprite spr = Sprite.Create(tex0, new Rect(0.0f, 0.0f, tex.width, tex.height), new Vector2(0.5f, 0.5f));
bod.sprite = spr;
}
private float Sense(Texture2D tex)
{
var cols = tex.GetPixels();
var avg = new Color(0, 0, 0);
foreach (var col in cols)
{
avg += col;
}
avg /= cols.Length;
return avg.grayscale;
}
}
Reference
이 문제에 관하여(kelpnet의 작법 8), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ohisama@github/items/bb766bd7737df711acc8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)