Как прочитать пиксели с изображения и показать их в космическом мире так же, как и в файле изображения?C#

Место общения программистов C#
Ответить
Anonymous
 Как прочитать пиксели с изображения и показать их в космическом мире так же, как и в файле изображения?

Сообщение Anonymous »

У меня есть файл изображения PNG, который я перетаскивал в активы.
Файл изображения устанавливается на 2D и включен чтение/запись. /> < /p>
Я хочу получить только эту строку, поэтому я стараюсь получить только синие пиксели, потому что я не хочу текст шага 1 в слева в верхней части.

Код: Выделить всё

using System.Collections.Generic;
using UnityEngine;
using System.Linq;

public class BlueLineAnimator : MonoBehaviour
{
public Texture2D image;
public float spacing = 0.01f;
public float maxDistance = 0.2f; // Filter out distant jumps
public float lineWidth = 0.05f;

private LineRenderer lineRenderer;

void Start()
{
lineRenderer = gameObject.AddComponent();
lineRenderer.material = new Material(Shader.Find("Sprites/Default"));
lineRenderer.startColor = Color.blue;
lineRenderer.endColor = Color.blue;
lineRenderer.startWidth = lineWidth;
lineRenderer.endWidth = lineWidth;
lineRenderer.useWorldSpace = true;
lineRenderer.numCornerVertices = 5;
lineRenderer.numCapVertices = 5;

DrawBlueLine();
}

void DrawBlueLine()
{
List points = new();

for (int y = 0; y < image.height; y++)
{
for (int x = 0; x < image.width; x++)
{
Color pixel = image.GetPixel(x, y);
if (IsBlue(pixel))
{
Vector3 pos = new Vector3(x * spacing, y * spacing, 0);
points.Add(pos);
}
}
}

// Sort like in WinForms: top to bottom, then left to right
points = points.OrderBy(p => p.y).ThenBy(p => p.x).ToList();

// Filter out noisy jumps
List filtered = new();
filtered.Add(points[0]);

for (int i = 1; i < points.Count; i++)
{
if (Vector3.Distance(points[i], points[i - 1]) < maxDistance)
filtered.Add(points[i]);
}

lineRenderer.positionCount = filtered.Count;
lineRenderer.SetPositions(filtered.ToArray());
}

bool IsBlue(Color c)
{
return c.b > 0.7f && c.r < 0.4f && c.g < 0.4f;
}
}
Я хочу использовать Linerenderer и сделать линию гладкой, как на изображении.>

Подробнее здесь: https://stackoverflow.com/questions/796 ... actly-as-t
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»