| 
				
				Рисовать на 2d Текстуре
				 |   |  
| loginlogin | Дата: Пятница, 24 Марта 2017, 17:06 | Сообщение # 1 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Привет всем. У меня есть следующий вопрос. Каким образом можно осуществить рисование кистью на 2d текстурe? гуглил , но ничего не нашёл. Может кто уже сталкивался с этим. Заранее спасибо.
  Максимум 600 символов
 |  
| 
 | 
 |    |  
| URGINSAN | Дата: Пятница, 24 Марта 2017, 19:22 | Сообщение # 2 |  
 
почти ветеран 
Сейчас нет на сайте 
 
 | loginlogin, недавно сталкивался, по работе надо было рисовалку для детей сделать. Сорри, код выкладывать не буду. Но промучился я месяца 1,5. Инфы маловато в инете. Вкратце, рисование осуществляется функцией SetPixel(x,y,color); Для заливки гугли алгоритм FloodFill в юнити. Для рисования кистью гугли DrawCircle, DrawLine на юнити сайтах. Для ластика тоже SetPixel(x,y,color), но в x,y подставляешь оригинальную текстуру и она как бы проявляется поверх рисовашек, симулируя ластик. Для undo, redo функций юзай массивы с сохранением картинки с каждым новым действием.
  В моей рисовалке можно было любой штрих загрузить, чтобы им рисовать как кистью. Поэтому времени я убил не мало.
  Я на драйве
 |  
| 
 | 
 |    |  
| loginlogin | Дата: Пятница, 24 Марта 2017, 21:01 | Сообщение # 3 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Цитата URGINSAN (  )   loginlogin, недавно сталкивался, по работе надо было рисовалку для детей сделать. Сорри, код выкладывать не буду. Но промучился я месяца 1,5. Инфы маловато в инете. Вкратце, рисование осуществляется функцией SetPixel(x,y,color); Для заливки гугли алгоритм FloodFill в юнити. Для рисования кистью гугли DrawCircle, DrawLine на юнити сайтах. Для ластика тоже SetPixel(x,y,color), но в x,y подставляешь оригинальную текстуру и она как бы проявляется поверх рисовашек, симулируя ластик. Для undo, redo функций юзай массивы с сохранением картинки с каждым новым действием.
  В моей рисовалке можно было любой штрих загрузить, чтобы им рисовать как кистью. Поэтому времени я убил не мало. 
  Спасибо)Добавлено (24 марта 2017, 21:01) ---------------------------------------------
  Цитата URGINSAN (  )   loginlogin, недавно сталкивался, по работе надо было рисовалку для детей сделать. Сорри, код выкладывать не буду. Но промучился я месяца 1,5. Инфы маловато в инете. Вкратце, рисование осуществляется функцией SetPixel(x,y,color); Для заливки гугли алгоритм FloodFill в юнити. Для рисования кистью гугли DrawCircle, DrawLine на юнити сайтах. Для ластика тоже SetPixel(x,y,color), но в x,y подставляешь оригинальную текстуру и она как бы проявляется поверх рисовашек, симулируя ластик. Для undo, redo функций юзай массивы с сохранением картинки с каждым новым действием.
  В моей рисовалке можно было любой штрих загрузить, чтобы им рисовать как кистью. Поэтому времени я убил не мало. 
  
  Спасибо огромное. За пять минут нашёл по твоей наводки. всю жизнь буду тебя помнить)   
  Максимум 600 символов
 |  
| 
 | 
 |    |  
| URGINSAN | Дата: Пятница, 24 Марта 2017, 21:24 | Сообщение # 4 |  
 
почти ветеран 
Сейчас нет на сайте 
 
 | loginlogin, пожалуйста) 1,5 месяца бессонной работы тебе сэкономил)
  Я на драйве
 |  
| 
 | 
 |    |  
| loginlogin | Дата: Суббота, 25 Марта 2017, 16:54 | Сообщение # 5 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Цитата URGINSAN (  )    недавно сталкивался, по работе надо было рисовалку для детей сделать. Сорри, код выкладывать не буду. Но промучился я месяца 1,5. Инфы маловато в инете. Вкратце, рисование осуществляется функцией SetPixel(x,y,color); Для заливки гугли алгоритм FloodFill в юнити. Для рисования кистью гугли DrawCircle, DrawLine на юнити сайтах. Для ластика тоже SetPixel(x,y,color), но в x,y подставляешь оригинальную текстуру и она как бы проявляется поверх рисовашек, симулируя ластик. Для undo, redo функций юзай массивы с сохранением картинки с каждым новым действием.
  В моей рисовалке можно было любой штрих загрузить, чтобы им рисовать как кистью. Поэтому времени я убил не мало.  
  URGINSAN, если тебе не сложно, можешь помочь? в общем такая проблема, когда я начинаю быстро проводить мышью, получается вот такая херня:
 
  вот скрипт: Для круга
 Код public static void Circle(this Texture2D tex, int cx, int cy, int r, Color col)     {   int x, y, px, nx, py, ny, d;
    for (x = 0; x <= r; x++)   {    d = (int)Mathf.Ceil(Mathf.Sqrt(r * r - x * x));    for (y = 0; y <= d; y++)    {     px = cx + x;     nx = cx - x;     py = cy + y;     ny = cy - y;
      tex.SetPixel(px, py, col);     tex.SetPixel(nx, py, col);
      tex.SetPixel(px, ny, col);     tex.SetPixel(nx, ny, col);
     }   }         }
   для того что бы рисовать
 Код void DrawTex(){   if (Input.GetMouseButton (0)) {    Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);    RaycastHit hit;    if (Physics.Raycast (ray, out hit, 100f)) {     Vector2 pixelUV = hit.textureCoord;     pixelUV.x *= tex.width;     pixelUV.y *= tex.height;     Vector2 position = new Vector2 (pixelUV.x, pixelUV.y);     vect = pixelUV;     tex.Circle ((int)position.x, (int)position.y, rang, aFillColor);     tex.Apply ();    }   }     } 
  что я делаю не так? и как это исправить? заранее спасибо.
  Максимум 600 символов
 
 Сообщение отредактировал loginlogin - Суббота, 25 Марта 2017, 16:55  |  
| 
 | 
 |    |  
| URGINSAN | Дата: Суббота, 25 Марта 2017, 17:52 | Сообщение # 6 |  
 
почти ветеран 
Сейчас нет на сайте 
 
 | loginlogin, с этой проблемой я тоже сталкивался)) Подсказка, тебе надо соединить функцию DrawLine с DrawCircle. Тыц, небольшой код
  Я на драйве
 |  
| 
 | 
 |    |  
| loginlogin | Дата: Воскресенье, 26 Марта 2017, 22:01 | Сообщение # 7 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Цитата URGINSAN (  )   loginlogin, с этой проблемой я тоже сталкивался)) Подсказка, тебе надо соединить функцию DrawLine с DrawCircle. Тыц, небольшой код   Спасибо огромное) У меня получилось. Только fps приседает. А так всё норм.
  Максимум 600 символов
 
 Сообщение отредактировал loginlogin - Воскресенье, 26 Марта 2017, 23:38  |  
| 
 | 
 |    |  
| URGINSAN | Дата: Понедельник, 27 Марта 2017, 11:35 | Сообщение # 8 |  
 
почти ветеран 
Сейчас нет на сайте 
 
 | loginlogin, уменьши размер картинки, на которой рисуешь. Есть вообще второй способ рисования, это создание объектов "кисти" рантайм прям на рисунке, потом рендер всего этого в текстуру, потом применить новую текстуру в рисунку, но этот способ сложный и с Canvas мне не удалось его сдружить.
  Я на драйве
 |  
| 
 | 
 |    |  
| loginlogin | Дата: Понедельник, 27 Марта 2017, 13:38 | Сообщение # 9 |  
 
был не раз 
Сейчас нет на сайте 
 
 | Цитата URGINSAN (  )   loginlogin, уменьши размер картинки, на которой рисуешь. Есть вообще второй способ рисования, это создание объектов "кисти" рантайм прям на рисунке, потом рендер всего этого в текстуру, потом применить новую текстуру в рисунку, но этот способ сложный и с Canvas мне не удалось его сдружить.   уменьшение картинки помогло) огромное спасибо)  
  Максимум 600 символов
 
 Сообщение отредактировал loginlogin - Понедельник, 27 Марта 2017, 13:40  |  
| 
 | 
 |    |     
		
		 
 |