Расширение класса частиц

Программирование на Юнити.

Re: Расширение класса частиц

Сообщение Neodrop 16 апр 2011, 19:17

glap писал(а):Мне нужно расширить класс Particle. Унаследоваться от Particle нельзя.

Я готов сам обслуживать список частиц и интегрировать их в пространстве, но я не знаю, как рисовать частицы вручную без компонентов из "системы частиц".

Помогите советом. Спасибо.


Можно использовать Расширяющие методы. Дотнет позволяет дописать ваши методы почти в любой (кроме статических) класс.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Расширение класса частиц

Сообщение glap 16 апр 2011, 19:41

Neodrop писал(а):
glap писал(а):Мне нужно расширить класс Particle. Унаследоваться от Particle нельзя.

Я готов сам обслуживать список частиц и интегрировать их в пространстве, но я не знаю, как рисовать частицы вручную без компонентов из "системы частиц".

Помогите советом. Спасибо.


Можно использовать Расширяющие методы. Дотнет позволяет дописать ваши методы почти в любой (кроме статических) класс.


Мне нужны новые поля. Методы то можно и внешние сделать в крайнем случае, с параметром вместо this.
glap
UNец
 
Сообщения: 8
Зарегистрирован: 16 апр 2011, 11:16

Re: Расширение класса частиц

Сообщение Neodrop 16 апр 2011, 19:58

Не наследуясь, поля не добавить.
Добавить neodrop в Skype
Изображение
"Спасибо!" нашему порталу, вы сможете сказать ЗДЕСЬ.
Если проблема не решается честно, нужно её обмануть! || Per stupiditas at Astra!
Страх порождает слабость. Бесстрашных поражают пули.
Протратившись на блядях байтах, на битах не экономят.
Аватара пользователя
Neodrop
Админ
 
Сообщения: 8480
Зарегистрирован: 08 окт 2008, 15:42
Откуда: Питер
Skype: neodrop
  • Сайт

Re: Расширение класса частиц

Сообщение gnoblin 16 апр 2011, 19:59

Paul, а покажи код как ты рисуешь тысячу квадов?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Расширение класса частиц

Сообщение gnoblin 16 апр 2011, 20:01

а нельзя сделать класс у которого одно из полей будет ссылка на объект с системой частиц и дальше работать с этим?
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Расширение класса частиц

Сообщение alexz 16 апр 2011, 20:03

А что, собственно, сделать-то нужно?
alexz
UNITрон
 
Сообщения: 270
Зарегистрирован: 16 ноя 2010, 23:37

Re: Расширение класса частиц

Сообщение Paul Siberdt 16 апр 2011, 20:09

Я не квады рисую, а беру меш и материал по ссылкам и рисую графикс. На выходе - килодравкол :)

Синтаксис:
Используется javascript
private var myTransform : Transform;
var m : Mesh;
var mat : Material;

function Awake() { myTransform = transform; }

function Update(){
  for ( i=0; i<10; i++ )
   for ( j=0; j<10; j++ )
    for ( k=0; k<10; k++ )
      Graphics.DrawMesh(m, Vector3( i, j, k ), myTransform.rotation, mat, 0);
}
 
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Расширение класса частиц

Сообщение glap 16 апр 2011, 21:29

А что быстрее, строить вершины квадрата через примитивы GL или Graphics.DrawMesh ? И вообще существенны ли различия?
glap
UNец
 
Сообщения: 8
Зарегистрирован: 16 апр 2011, 11:16

Re: Расширение класса частиц

Сообщение gnoblin 16 апр 2011, 21:48

Ну наверное DrawMesh 1 раз тут вызвать не получится :).
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Расширение класса частиц

Сообщение glap 16 апр 2011, 22:15

gnoblin писал(а):Ну наверное DrawMesh 1 раз тут вызвать не получится :).


Не понял. DrawMesh в состоянии нарисовать мне частицу. Разве нет?
glap
UNец
 
Сообщения: 8
Зарегистрирован: 16 апр 2011, 11:16

Re: Расширение класса частиц

Сообщение gnoblin 16 апр 2011, 22:53

да, но если рисовать много частиц (и на каждую частицу - много вызовов DrawMesh) - получается очень много draw calls.
skypeid: madkust
Мои крайние проекты:
Убойный Хоккей
Cube Day Z (альфа)
Аватара пользователя
gnoblin
Адепт
 
Сообщения: 4633
Зарегистрирован: 08 окт 2008, 17:23
Откуда: Минск, Беларусь
Skype: madkust
  • Сайт

Re: Расширение класса частиц

Сообщение glap 16 апр 2011, 23:01

А зачем на частицу много вызовов DrawMesh? Один раз в кадр.
glap
UNец
 
Сообщения: 8
Зарегистрирован: 16 апр 2011, 11:16

Re: Расширение класса частиц

Сообщение glap 16 апр 2011, 23:07

Вообще частиц у меня десятки тысяч. Хотелось бы узнать наиболее опимальный вариант их отрисовки. Сейчас так:

Синтаксис:
Используется csharp
            GL.Begin(GL.QUADS);
           
            GL.TexCoord(new Vector3(0, 0, 0));
            GL.Vertex(part.pos);

            GL.TexCoord(new Vector3(0, 1, 0));
            GL.Vertex3(part.pos.x, part.pos.y + part.size.y, part.pos.z);

            GL.TexCoord(new Vector3(1, 1, 0));
            GL.Vertex3(part.pos.x + part.size.x, part.pos.y + part.size.y, part.pos.z);

            GL.TexCoord(new Vector3(1, 0, 0));
            GL.Vertex3(part.pos.x + part.size.x, part.pos.y, part.pos.z);
 


Для каждой в цикле.
glap
UNец
 
Сообщения: 8
Зарегистрирован: 16 апр 2011, 11:16

Re: Расширение класса частиц

Сообщение Neyl 17 апр 2011, 00:10

gnoblin писал(а):Ну наверное DrawMesh 1 раз тут вызвать не получится :).

Примерно так получится :)
Синтаксис:
Используется csharp
using UnityEngine;
using System.Collections;

public class GDMtesterCom : MonoBehaviour {

        public Mesh m;
        public Material mat;
        public int arraySize = 10;
        Mesh comMesh;

       
        void Start ()
        {
                comMesh = new Mesh();
                CombineInstance[] ci = new CombineInstance[arraySize*arraySize*arraySize];
               
                for ( int i=0; i<arraySize; i++ )
                {
                   for ( int j=0; j<arraySize; j++ )
                        {
                    for ( int k=0; k<arraySize; k++ )
                                {
                                        int currElement = k + (j*arraySize) + (i*arraySize*arraySize);
                                        Debug.Log (currElement);
                                        ci[currElement].mesh = m;
                                        Matrix4x4 tfm = Matrix4x4.zero;
                                        tfm.SetTRS(new Vector3( i, j, k ), transform.rotation, new Vector3( 0.5f, 0.5f, 0.5f ));
                                        ci[currElement].transform = tfm;
                                }
                        }
                }
               
                comMesh.CombineMeshes(ci);
        }
       
       
        void Update ()
        {
                Graphics.DrawMesh(comMesh, transform.position, transform.rotation, mat, 0);
        }
}
Аватара пользователя
Neyl
UNIверсал
 
Сообщения: 404
Зарегистрирован: 20 июн 2010, 10:17

Re: Расширение класса частиц

Сообщение Paul Siberdt 17 апр 2011, 04:06

Считать меш на старте не честно :)
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Пред.След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 7