Elite Games - Свобода среди звезд!
.
ВНИМАНИЕ!
Наша конференция посвящена космической тематике и компьютерным играм.
Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!

  » Луна-9-10: разработка. | страница 4
Конференция предназначена для общения пилотов. Для удобства она разделена на каналы, каждый из которых посвящен определенной игре. Пожалуйста, открывайте темы только в соответствующих каналах и после того, как убедитесь, что данный вопрос не обсуждался ранее.

Поиск | Правила конференции | Фотоальбом | Регистрация | Список пилотов | Профиль | Войти и проверить личные сообщения | Вход

   Страница 4 из 13
На страницу: Пред.  1, 2, 3, 4, 5 ... 11, 12, 13  След.    Перейти:   Все страницы
Поиск в этой теме:
Канал Orbiter: «Луна-9-10: разработка.»
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Атчет о праисхадящем: циклограмма продвигается весьма быстро и пока успешно, скоро альфу можно обновлять. Зарекался использовать указатели на функции, а все равно пришлось делать через них Улыбка.

Bloodest,
Спасибо, очень интересно! И камешки такие знакомые-знакомые Подмигиваю И солнечная батарея торчит из-под посадочной ноги, как крыло раздавленной бабочки. (За марсоходами я уж который год слежу в не менее чем еженедельном режиме). Аддон впечатляет весьма, хотя это, конечно, отдельный проект. И с несколько другой направленностью, чем у меня. Я как раз не стремлюсь к исторической идентичности человеческих операций, что пилотов, что дистанционно. Уж очень они сложны и специфичны, слишком много контекста требуют, и переучивания на каждую новую машину - а это сужает круг потенциальных пользователей... Но про фотопанель я как раз что-то такое и думал, это очнеь близко!

Динамическая замена мешей и целых объектов на посадке - прием немного стремноватый (требут аккуратности), но очень эффективный, а когда как следует настроен - то и эффектный. Я вот с циклограммой сижу, а голова фоном продолжает думать и об этом тоже... При подлете на крутой траекториии (а именно так и надо подлетать) мы ведь можем довольно заранее просчитать район посадки. И опять-таки заранее создать в нем наземный объект, вроде космодрома, с текстурой лунной поверхности. Можно даже несколько объектов, если у них есть ограничения на размер текстуры. Примерно то же, что делает тот "рельефный" аддон, только для начала без рельефа. Тогда и посадка будет красивее, и порожденный кратер (если что) лучше впишется.

Это же можно будет делать и с рельефом - раз мы его сами порождаем, значит, у нас будет карта высот, и можно будет "приземлять" аппарат на рельеф, и даже путешествовать по нему, играясь точками touchdown. Я так сейчас и делаю, только на нулевой базе. Другое дело, что с рельефными, трехмерными посадочными площадками я бы сначала поигрался в Армадилло 3-й версии. Там они куда более функциональны (не просто для красоты), да и аппарат куда более приспособлен для отладки множественных взлетов-посадок, чем одноразовый лунник. Вот, кстати, иллюстрация "фазовой" разработки: задуманы эти фичи были аж в самой первой версии, а практически к ним (надеюсь!) удастся подобраться только в третьей...
    Добавлено: 23:28 16-11-2007   
Thorton
 87 EGP


Рейтинг канала: 3(36)
Репутация: 12
Сообщения: 696
Откуда: Томск
Зарегистрирован: 15.05.2006
Igel,так мне рисовать лендер со встроенной панорамой или будешь делать по варианту Bloodest'а?
    Добавлено: 17:46 18-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Так фиг его знает Подмигиваю . Мы ж окончательно пока ничего не решили...

Вариант Bloodest-а - верняк, практически никакого технического риска плюс интересные варианты развития. И не должен быть трудоемким (при таком-то примере). Но требует от пилота хотя бы минимальной работы с панелью (найти и показать).

Вариант со встроенной панорамой ничего от пилота не требует и вообще более всего по своему месту в проекте близок к финальному Интернационалу Луны-10 (т.е., красивая и изяшная фенечка, подчеркивающий штришок). Но технический риск серьезный: много неопределенности, не факт что получится вообще и что будет смотреться универсально на разных настройках. Трудоемкость... не знаю, может быть, достаточно небольшая, чтобы все равно попробовать, даже зная, что может не выйти. Да и задел, глядишь, еще для чего-нибудь пригодится.

А выбирать "который из вариантов" сейчас рано. Я работаю по agile-методике, а она совершенно разумно "не велит" делать такие выборы раньше, чем "окончательно припрет" Гы-гы
    Добавлено: 20:35 18-11-2007   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Гы, опять же, посадка на меш- шоб стоял папарат на нем Гы-гы, а не провалился под.
Самописного кода не много, вся математика взята из книги Борескова и Ко включая вектора и проч.
Значиться модуль называется Radar.
Основа - модуль читает мешь базы и вычислеят его высоту в заданной точке.

Заголовочек

#include "Geometry.h"

Код:
class LK_Radar
{
public:
   bool b_Right;//ИНИЦИАЛИЗАЦИЯ ПРОШЛА
        Triangle *Ts;//треугольники сетки
   int n_triangles;//число треугольников
   LK_Radar(void);
   Init(void);//Инициализация
   ~LK_Radar(void);
   double GetHS(double x,double z);//высота меша "поверхности" в данной точке (пасадки, передвижения, зайчика лазерного прицела)
};


Основной файлец

Пролог и конструктор/деструктор

Код:
#include <stdio.h>
#include <string.h>
#include "Geometry.h"
#include "radar.h"


struct Point
{
    float x,y,z;
};

LK_Radar::~LK_Radar(void)
{
   if(b_Right)   
   {
      delete Ts;// чистим веделенки от new
      b_Right = false;// защита
   }
};

LK_Radar::LK_Radar(void)
{
   b_Right=false;//защита
}


Читаем меш в виде треугольников...

Код:
int LK_Radar::Init(void)
{
// тупо открываем файл меша на чтение как текст
   b_Right =false;
   FILE * in;
   in = fopen("meshes/n1bis_ProcellBase_mapro41.msh","rt");
   if(in == NULL) return 0;

   char string[2048];
   int i=0,n_points=0;
   n_triangles=0;
   for(i=0; i<10;i++)//счас может больше 10
   {
      fgets(string,2048,in);//построчно читаем
      if (!strnicmp (string, "GEOM ", 4))//добрались до геометрии
      {
         sscanf (string+4, "%d %d", &n_points,&n_triangles);//число точек и треугольников
         break;
      }
   }
   Point * Points = new Point[n_points];//выделяем место под точки
   for(i=0; i<n_points; i++)
   {
      Points[i].x=Points[i].y=Points[i].z=0;
      fgets(string,2048,in);
      //printf("%s",string);
      float tx,ty,tz;
      sscanf (string, "%f %f %f",&tx,&ty,&tz);
// Взят чужой меш он довернут, шоб смотрел на север, и смещен при помещении в базу, шоб самый глубокий кратер не был дном ниже поверхности шарика, лево - право - шоб совпал с лунографической координатой (те внесены поправки которые были применены при помещении меша в файле конфига базы)
      double ungl = 85./57.3;
      Points[i].x = cos(ungl)*tx-sin(ungl)*tz;
      Points[i].y = ty;
      Points[i].z = sin(ungl)*tx+cos(ungl)*tz;
      Points[i].x+=110.0;
      Points[i].y+=15;//-6.0;
      Points[i].z+=30.0;
   }

   Ts = new Triangle[n_triangles];
   for(i=0; i<n_triangles; i++)//Читаем треугольники
   {
      
      fgets(string,2048,in);
      int na=0,nb=0,nc=0;
      sscanf (string, "%d %d %d",&na,&nb,&nc);
      Ts[i]=Triangle(Vector(Points[na].x,Points[na].y,Points[na].z),
               Vector((Points[nb].x-Points[na].x),
                      Points[nb].y-Points[na].y,
                     Points[nb].z-Points[na].z),
               Vector((Points[nc].x-Points[na].x),
                       Points[nc].y-Points[na].y,
                      Points[nc].z-Points[na].z)
                  );
   }
   fclose(in);
   delete Points;
   b_Right =true;//Инициализировались!
   return 1;
}


Ну и собственно вычисление высоты

Код:
double LK_Radar::GetHS(double x,double z)
{
   if(!b_Right) return 0.0;//Защита
   double zero = 1.e3, dir =-1.;//Смотрим на меш с высоты 1 км вниз
   Ray Raay(Vector(x,zero,z),Vector(0,dir,0));//Луч из точки по направлению
   double delta =0.0;
   for (int i=0; i<n_triangles; i++)//Перебираем треугольники
   {
      int rez = Ts[i].Intersect(Raay,delta); //расстояние дельта вдоль луча до треугольника.
      if(rez >0) // есть пересечение.
      {
         return zero+dir*delta;//высота минус расстояние до меша == высота меша - точно, если луч вертикальный
      }
   }
   return 0.0;
};


добавлено спустя 17 минут:
Вот внешний код, чужой, (свободен к распространению)

geometry.h (урезан до необходимого минимума)
Код:

/////////////////////////////////////////////////////////
// Sample program to book                              //
//  Computer Graphics : Dynamics & Realistic Imaging.  //
//      by A.V. Boreskoff, E.V. Shikin                 //
//                                                     //
// Author:                                             //
//    Alex V. Boreskoff                                //
//                                                     //
// E-mail:                                             //
//    alex@garser.msk.su                               //
/////////////////////////////////////////////////////////

#ifndef   __GEOMETRY__
#define   __GEOMETRY__

#include   "Vector.h"
#define   EPS   0.01

class   Rect
{
public:
   Vector   Loc;
   Vector   Side1, Side2;
   Vector   n;
   Vector   ku, kv;
   double   u0, v0;

   Rect ( Vector&, Vector&, Vector& );
   Rect () {};
   virtual   int   Intersect ( Ray&, double& );
   virtual   Vector   FindNormal ( Vector& ) { return n; };
};

class   Triangle : public Rect
{
public:
   Triangle ( Vector& l, Vector& s1, Vector& s2 ) : Rect ( l, s1, s2 ) {};
   Triangle () {};
   virtual   int   Intersect ( Ray&, double& );
};
};


extern   double   GeomThreshold;         // min. ray length accounted for
                  // if ray length to intersection point is
                  // lesser than this value, assume NO INTERSECTION
#endif


geometry.cpp (урезан до необходимого минимума)
Код:

/////////////////////////////////////////////////////////
// Sample program to book                              //
//  Computer Graphics : Dynamics & Realistic Imaging.  //
//      by A.V. Boreskoff, E.V. Shikin                 //
//                                                     //
// Author:                                             //
//    Alex V. Boreskoff                                //
//                                                     //
// E-mail:                                             //
//    alex@garser.msk.su                               //
/////////////////////////////////////////////////////////


#include   "Geometry.h"

double   GeomThreshold = 0.001;

////////////////////// Rect methods ///////////////////////

Rect :: Rect ( Vector& l, Vector& s1, Vector& s2 )
{
   Loc   = l;
   Side1 = s1;
   Side2 = s2;
   n     = Normalize ( Side1 ^ Side2 );

   double   s11 = Side1 & Side1;
   double   s12 = Side1 & Side2;
   double   s22 = Side2 & Side2;
   double   d   = s11 * s22 - s12 * s12;   // determinant

   ku = ( Side1 * s22 - Side2 * s12 ) / d;
   kv = ( Side2 * s11 - Side1 * s12 ) / d;
   u0 = - ( Loc & ku );
   v0 = - ( Loc & kv );
}

int   Rect :: Intersect ( Ray& r, double& t )
{
   double   vd = n & r.Dir;

   if ( vd > -EPS && vd < EPS )
      return 0;

   if ( ( t = ( ( Loc - r.Org ) & n ) / vd ) < GeomThreshold )
      return 0;

   Vector   p = r.Point ( t );
   double   u = u0 + ( p & ku );
   double   v = v0 + ( p & kv );

   return u > 0 && v > 0 && u < 1 && v < 1;
}

////////////////////// Triangle methods ///////////////////////

int   Triangle :: Intersect ( Ray& r, double& t )
{
   double   vd = n & r.Dir;

   if ( vd > -EPS && vd < EPS )
      return 0;

   if ( ( t = ( ( Loc - r.Org ) & n ) / vd ) < GeomThreshold )
      return 0;

   Vector   p = r.Point ( t );
   double   u = u0 + ( p & ku );
   double   v = v0 + ( p & kv );

   return u > 0 && v > 0 && u + v < 1;
}


Вектора
vector.h

Код:

/////////////////////////////////////////////////////////
// Sample program to book                              //
//  Computer Graphics : Dynamics & Realistic Imaging.  //
//      by A.V. Boreskoff, E.V. Shikin                 //
//                                                     //
// Author:                                             //
//    Alex V. Boreskoff                                //
//                                                     //
// E-mail:                                             //
//    alex@garser.msk.su                               //
/////////////////////////////////////////////////////////

#ifndef   __VECTOR__
#define   __VECTOR__

#include   <math.h>

class   Vector
{
public:
   double   x, y, z;

   Vector () {};
   Vector ( double v ) { x = y = z = v; };
   Vector ( const Vector& v ) { x = v.x; y = v.y; z = v.z; };
   Vector ( double vx, double vy, double vz ) { x = vx; y = vy; z = vz; };

   Vector&   operator = ( const Vector& v ) { x = v.x; y = v.y; z = v.z; return *this; };
   Vector& operator = ( double f ) { x = y = z = f; return *this; };
   Vector  operator - () const;

   Vector&   operator += ( const Vector& );
   Vector& operator -= ( const Vector& );
   Vector&   operator *= ( const Vector& );
   Vector& operator *= ( double );
   Vector&   operator /= ( double );

   friend   Vector operator + ( const Vector&, const Vector& );
   friend   Vector operator - ( const Vector&, const Vector& );
   friend   Vector operator * ( const Vector&, const Vector& );
   friend   Vector operator * ( double, const Vector&  );
   friend   Vector operator * ( const Vector&, double  );
   friend   Vector operator / ( const Vector&, double  );
   friend   Vector operator / ( const Vector&, const Vector& );
   friend   double operator & ( const Vector& u, const Vector& v ) { return u.x*v.x + u.y*v.y + u.z*v.z; };
   friend   Vector operator ^ ( const Vector&, const Vector& );

   double   operator !  () { return (double) sqrt ( x*x + y*y + z*z ); };
   double&   operator [] ( int n ) { return * ( &x + n ); };
   int   operator <  ( double v ) { return x < v && y < v && z < v; };
   int   operator >  ( double v ) { return x > v && y > v && z > v; };
};

class   Ray
{
public:
   Vector   Org;
   Vector   Dir;            // direction must be normalyzed

   Ray () {};
   Ray ( Vector& o, Vector& d ) { Org = o; Dir = d; };

   Vector   Point ( double t ) { return Org + Dir*t; };
};

//////////////////// implementation /////////////////////////

inline   Vector   Vector :: operator - () const
{
   return Vector ( -x, -y, -z );
}

inline   Vector   operator + ( const Vector& u, const Vector& v )
{
   return Vector ( u.x + v.x, u.y + v.y, u.z + v.z );
}

inline   Vector   operator - ( const Vector& u, const Vector& v )
{
   return Vector ( u.x - v.x, u.y - v.y, u.z - v.z );
}

inline   Vector   operator * ( const Vector& u, const Vector& v )
{
   return Vector ( u.x * v.x, u.y * v.y, u.z * v.z );
}

inline   Vector   operator * ( const Vector& u, double f )
{
   return Vector ( u.x * f, u.y * f, u.z * f );
}

inline   Vector   operator * ( double f, const Vector& v )
{
   return Vector ( f * v.x, f * v.y, f * v.z );
}

inline   Vector   operator / ( const Vector& v, double f )
{
   return Vector ( v.x / f, v.y / f, v.z / f );
}

inline   Vector   operator / ( const Vector& u, const Vector& v )
{
   return Vector ( u.x / v.x, u.y / v.y, u.z / v.z );
}

inline   Vector&   Vector :: operator += ( const Vector& v )
{
   x += v.x;
   y += v.y;
   z += v.z;

   return *this;
}

inline   Vector&   Vector :: operator -= ( const Vector& v )
{
   x -= v.x;
   y -= v.y;
   z -= v.z;

   return *this;
}

inline   Vector&   Vector :: operator *= ( double v )
{
   x *= v;
   y *= v;
   z *= v;

   return *this;
}

inline   Vector&   Vector :: operator *= ( const Vector& v )
{
   x *= v.x;
   y *= v.y;
   z *= v.z;

   return *this;
}

inline   Vector&   Vector :: operator /= ( double v )
{
   x /= v;
   y /= v;
   z /= v;

   return *this;
}

/////////////////////////// Functions /////////////////////////////////

inline   Vector   Normalize ( Vector& v ) { return v / !v; };
Vector   RndVector ();
Vector&   Clip ( Vector& );
#endif


Код:

/////////////////////////////////////////////////////////
// Sample program to book                              //
//  Computer Graphics : Dynamics & Realistic Imaging.  //
//      by A.V. Boreskoff, E.V. Shikin                 //
//                                                     //
// Author:                                             //
//    Alex V. Boreskoff                                //
//                                                     //
// E-mail:                                             //
//    alex@garser.msk.su                               //
/////////////////////////////////////////////////////////

//#include   <math.h>

#include   "Vector.h"
#include   "stdlib.h"

Vector   operator ^ ( const Vector& u, const Vector& v )
{
   return Vector ( u.y * v.z - u.z * v.y,
         u.z * v.x - u.x * v.z,
         u.x * v.y - u.y * v.x );
};

Vector   RndVector ()
{
   Vector   v ( rand () - 0.5*RAND_MAX, rand () - 0.5*RAND_MAX, rand () - 0.5*RAND_MAX );

   return Normalize ( v );
};

Vector&   Clip ( Vector& v )
{
   if ( v.x < 0.0 )
      v.x = 0.0;
   else
   if ( v.x > 1.0 )
      v.x = 1.0;

   if ( v.y < 0.0 )
      v.y = 0.0;
   else
   if ( v.y > 1.0 )
      v.y = 1.0;

   if ( v.z < 0.0 )
      v.z = 0.0;
   else
   if ( v.z > 1.0 )
      v.z = 1.0;

   return v;
};


добавлено спустя 8 минут:
Ну и в ландере
В коде спуска
...
GetEquPos(pos_now.x,pos_now.y,pos_now.z);//Лунографические координаты
SHeight=GetSHeight(pos_now.x,pos_now.y);//высота поверхности
double H = GetAltitude() - SHeight;// Высота полета
...

Код:
double N1bis_LK::GetSHeight(double x,double y)
{
   VECTOR3 pos_now =_V( x,y,0.0);
   VECTOR3 P_Zero =_V(-23.4193*RAD, -3.0138*RAD, 0);//координаты базы
   VECTOR3 temp20=pos_now - P_Zero;
   VECTOR3 temp21=_V(RADIUS_MOON*temp20.x, RADIUS_MOON*temp20.y,0.0);
   return Radar.GetHS(-temp21.y,temp21.x);//минус - разные системы координат у Борескова и в Орбитере (левая- правая).
}


Последний раз редактировалось: Bloodest (09:47 19-11-2007), всего редактировалось 3 раз(а)
    Добавлено: 09:44 19-11-2007   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Ну и картинки,
Отделился блок Д, включен "Радар" и он видит поверхность меша - 2224 метра. ЛК начинает вертикальное падение. Затем тормозит на высоту 100 метров и ожидает команды на точку посадки.
http://koavia.com/n1/moon/15.jpg

Точка уже выбрана и ЛК начал спуск в точку посадки
http://koavia.com/n1/moon/16.jpg

Космонавт-разведчик передвигается к посадочному модулю Аполло для исследования американских технологий Гы-гы
http://koavia.com/n1/moon/17.jpg

У Сервейера
http://koavia.com/n1/moon/18.jpg

Чуть повыше
http://koavia.com/n1/moon/19.jpg

Ну при всем при этом шарик Луны на полтора метра ниже кратера Сервейер - в меше есть ямка и поглубже.
    Добавлено: 10:47 19-11-2007   
Бука
 63 EGP


Рейтинг канала: 2(10)
Репутация: 12
Сообщения: 67
Откуда: Анапа
Зарегистрирован: 10.03.2006
Ааа!!!!!
Bloodest, умоляю - дай наконец на 11А52 Подмигиваю полетать....
Хоть на сырой, но очеееееень хочется.
Я твой аддон уже два года жду!!!! Рыдания.
_________________
Земля - слишком маленькая и хрупкая корзина, чтобы человечество держало в ней все свои яйца...
    Добавлено: 12:24 19-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Тоже до боли знакомый интерьерчик Подмигиваю . А что он за палку от Сервейера отломал? Гы-гы Там вроде американы сами все, что можно было безопасно унести, унесли (я, кстати, лицезрел евойную телекамеру живьем, в музее. Вроде и ничего особенного - но как подумаешь про ее путешествия...)

Да, аддон... обещающий! Улыбка

Код - немедленно в авоську! Пригодится, и, возможно, раньше, чем я думаю.

Теперь о себе любимом Гы-гы . Доделал автопилот посадки, получилось даже реалисточнее, чем собирался. Внутренне реалисточнее: по используемым параметрам нет практически ничего, к чему не имели доступа реальные моги реального аппарата. Получилось как-то само собой. Вот только версию собрать не смогу пока еще несколько дней: все потроха наружу. Теперь хочу сразу по горячим следам добавить орбитальный автопилот для Луны-10. От этого наверняка разъедется имеющаяся циклограмма, ну и ладо: как сломаю, так и починю, а делать это все равно надо будет, так пусть лучше сейчас. И сохранение-восстановление циклограммы и автопилота - отдельная песня, довольно трудоемкая. Да еще добавить отрубание всего этого для ручного режима... Но ничего - зато весь этот "темный угол" кода будет стабилизирован как следует и надолго, оно того стоит.
    Добавлено: 22:23 19-11-2007   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
Ну палка как и красный прицел над Аполло - заглушки. Палка - эт сборник образцов (будущий), типа не как у амеров (тот значительно короче) палка-хваталка, а спец бункер, внутри фторопластовая трубка - тырк в грунт образец попадает в трубку - жим на кнопку, образец пережимается кольцом и поднимается по бункеру-палке - получается навроде сосисек. Потом связка сосисек выталкивается в спец-бэг на ЛК.
Круг - передатчик Лунохода.
    Добавлено: 08:25 20-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Новая альфа. Полная версия http://members.shaw.ca/atil8/Orbiter/Luna9/Luna9.v.A.zip , патч к имеющейся http://members.shaw.ca/atil8/Orbiter/Luna9/Luna9.v.A.patch.rar .

Визуально не добавлено ничего, главные изменения - поведенческие.

- Полная автоматизированная последовательность от отделения от блока Л до завершения миссии.
- Посадочный автопилот при крутой траектории сажает отменно.
- Орбитальный автопилот я даже не назвал таковым, там три строчки кода, просто включенные в циклограмму.
- Автопилота коррекции пока нет. Вместо него заглушка: ждет 5 секунд и говорит, что коррекциа закончена. Поэтому в одном сценарии пролететь от Земли до цели в автоматическом режиме пока не получится, ну да на то и сохраненные сценарии.
- Клавиша М переключает между ручным и автоматическим режимом. Впрочем, автоматику она отключает на раз, а вот обратное переключение совсем не гарантировано: в зависимости от этапа полета, состояние может восстановиться не полностью.
- Восстановление сохраненных сценариев с включенным автопилотом практически НЕ работает, по той же причине, что и восстановление после переключения в ручной режим: логика восстаовления автопилота сложная, и ее еще надо будет думать. Не исключено, проще и надежнее будет вообще сделать отключение автопилота нобратимым, типа, знаешь, на что идешь Улыбка

Как обычно на этом этапе разработки, рекомендую очистить каталог сценариев _Luna9. В некоторые (низковысотные лунные) сценарии добавлена опция, запускающая их с выключенным автопилотом.

В целом, стабильность новой альфы может несколько ухудшиться по сравнению с предыдущей. Это такой этап разработки, когда внутренняя сложность кода нарастает очень быстро. Ничего страшного, ближе к бете стабильность снова будет расти.

Следующий большой этап - автопилот коррекции. В нем два отдельных этапа и я уже знаю, как буду их делать. С направлением вектора придется жулить, как в Лайке (строить его в высотных координатах), но никто этого не заметит, потому что приходить в него я буду, конечно же, в одно движение. Параллельно с этой задачей (или последовательно, как получится) с автопилотом коррекции - еще две достаточно трудоемких задачи. Первая - отладка и "вылизывание" взаимодействия пилота с аддоном, интерфейса "человек-машина" тут же - сохранение-восстаовление сценария. Вторая - "окрасивливание" обломков.
    Добавлено: 23:05 23-11-2007   
Thorton
 87 EGP


Рейтинг канала: 3(36)
Репутация: 12
Сообщения: 696
Откуда: Томск
Зарегистрирован: 15.05.2006
Нашел следующие недоработки:
- у орбитера Луны 10 не раскрывается антенна
- при работе тормозных двигателей, клавиша должна Е выключать основной двигатель, но визуально это не отображается, т.е. в HUD видно, что тяга упала,но во внешнем виде все также горят пять факелов. Далее если нажать *, то отключатся только 4 маленьких движка, а основной будет продролжать работать, но приэтом в худ тяга будет показываться равной 0, нотоплива будет продолжать расходоваться
    Добавлено: 13:36 25-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Спасибо!

Про антенну - даже не знал, что она раскрывается Улыбка. Сделаю, конечно.

Клавиша Е иногда как-то странно глючит. Именно описанный глюк не наблюдал, но может быть. Клавишей * я обычно не пользуюсь, тоже может глючить. Орбитер, похоже, не очень хорошо относится к тому, что число сопел в группе меняется "на лету". В автопилоте посадки я сначала пытался просто вызывать ту же клавишу Е, была задница. Пришлось скопировать код и адаптировать. Побочные эффекты исчезли, когда я перед перетряской группы сопел сначала выключил двигатель. Когда дойдут руки - попробую то же самое сделать в коде клавиши Е, и может быть, снова его консолидировать.
    Добавлено: 20:37 25-11-2007   
Eraser_stp
 60 EGP


Рейтинг канала: 1(9)
Репутация: 2
Сообщения: 177

Зарегистрирован: 14.06.2007
Луна-9 нормально запустилась и отработала даже в последней бете Орбитера с DX3D9-клиентом. Улыбка Отличная работа!
    Добавлено: 07:34 26-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Это хорошо, спасибо! Чем шире тестирование и варианты, тем лучше!

Выходные получились сумасшедшие, но успел и поработать немножко. Главное - сделал коррекцию, работает отлично. То есть, цепочка управления теперь замкнута полностью, ручных этапов не осталось. "На Луну в одну кнопку" работает! Пока не выкладываю - надо еще подправить коррекцию для Луны-10, у нее чуть иные критерии и параметры. Плюс теперь, когда подлетные режимы стали более вероятностными, обнаружил некоторые "дыры" в посадочном автопилоте. Слишком узкая зона нормального прилета, а реальный разброс получается немаленький. То совсем аппарат зароется, то щуп не успеет выпустить, то наоборот, зависнет над самой поверхностью... Надо будет еще подстроить.

В общем, следующая неделя - доработка недоработок, ликвидация замечаний, багов, явных некрасивостей и неточностей. Ну и дальше - работа уже чисто "на красоту".
    Добавлено: 09:03 26-11-2007   
Bloodest
 155 EGP


Рейтинг канала: 3(40)
Репутация: 18
Сообщения: 944
Откуда: Питерские мы
Зарегистрирован: 07.10.2004
http://members.shaw.ca/atil8/Orbiter/Luna9/Luna9.v.A.zip
на голый Орбитер -


>>> ERROR: No vessel class configuration file found for:
>>> ERROR: r7BlockL_BOZ
>>> [C:\Source\Orbiter\Vessel.cpp / 248]
>>> TERMINATING <<<
    Добавлено: 10:18 26-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Спасибо! На голый - да, может быть. Некоторые сценарии имеют блок Л в явном виде (еще приаттаченный), некоторые могут иметь его рудименты. Хотя я стараюсь из тестовых сценариев все нерелевантное (отвалившееся) вычищать, мог забыть. Но эти вещи допустимы даже в бете: аддон не расчитан на отдельный релиз. А если и будет когда релизиться или размещаться отдельно - в доке придется прописывать зависимости от блока Л (да и вообще от всего семерочного пакета - для сценариев старта с Земли). Впрочем, до релиза еще пока дальше, чем мне уже хотелось бы Улыбка
    Добавлено: 10:41 26-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
У меня небольшая просьба к тестировщикам: теперь, фазе "выглаживания" - обращайте внимание на общее взаимодействие "человек-машина". Особенно на индикацию! Текстовые сообщения, которые недостаточно очевидны, лишние сообщения, сообщения, которых вы ждали, но которые не появились... события, происходящие "вдруг", непонятно почему, без предупреждения...

Еще вопрос - как лучше выводить строковые сообщения - в аннотации или в строке внизу экрана, или оба варианта в зависимости от сообщения? Какие где?
    Добавлено: 23:34 26-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Обновил версию. Линки те же, http://members.shaw.ca/atil8/Orbiter/Luna9/Luna9.v.A.zip для полной версии, http://members.shaw.ca/atil8/Orbiter/Luna9/Luna9.v.A.patch.rar для патча.

Добавлена автоматическая коррекция в 100 Мм от Луны (либо позже, но не ближе 70 Мм). Работает для Луны-9 и для Луны-10. Добавил два новых тестовых сценария для этих лучаев. Поправил посадочный автопилот, теперь он окончательно выключает и парашютирующий двигатель, если скорость падает до -1 м/с. "Зарыться" может по-прежнему, тут я ничего не трогал. Впрочем, в крайних тестах ни разу не зарывался.

Если ничего не наглючил, то это, скорее всего, будет крайняя "техническая" альфа. Главная задача - от площадки Байконура до раскрытия лепестков в лунной пыли в одну кнопку - решена. вчера в первый раз так и пролетел, с удовольствием. Ну разве что за вычетом одного сохранения, очистки и восстановления сценария из-за знаменитого "фокусного бага" семерки.

Остались красивости, удобства и сервисы. Теперь следующий апдейт будет не так скоро. Список улучшений и доработок сейчас - десятка на три позиций, если не больше. вместо того, чтобы улучшать по крохам, я лучше пройдусь по нему капитально и тщательно. Следующая большая цель - статус беты. Это когда изделие в принципе "готово для публики".
    Добавлено: 20:11 27-11-2007   
Eraser_stp
 60 EGP


Рейтинг канала: 1(9)
Репутация: 2
Сообщения: 177

Зарегистрирован: 14.06.2007
Боюсь с DX3D9-клиентом я ввёл в заблуждение, оказывается у меня работал обычный орбитеровский, просто надо было запускать экзешник с неграфическим движком.
Кроме упомянутого фокусного глюка, всё работает нормально. Был только один пролёт мимо Луны, когда я включил ускорение 10000х после MCC.
    Добавлено: 11:45 28-11-2007   
Thorton
 87 EGP


Рейтинг канала: 3(36)
Репутация: 12
Сообщения: 696
Откуда: Томск
Зарегистрирован: 15.05.2006
Глюк нашел какой-то странный Подозрение.
http://rapidshare.com/files/72861924/orbiter_2007-11-28_18-59-24-84_.avi.html

Полет был полностью на автопилоте.
    Добавлено: 16:21 28-11-2007   
igel
 100 EGP


Рейтинг канала: 4(86)
Репутация: 14
Сообщения: 755

Зарегистрирован: 12.06.2006
Это не глюк Улыбка. Это она тягу регулирует. Видит, что слишком резво тормозит, и сбрасывает. А дроссель очень медленный Улыбка

Скорость дросселя я по ходу подберу, чтобы побыстрее работал, но и чтобы визуально не мерцал слишком уж. Вообще там по ходу много подстроек идет.

Например, коррекция передвигается со 100 Мм на 50 или 70, еще не знаю... пока пробую на 50, но нужно больше статистики набрать, а то там тонкий баланс между точностью результата и затратами топлива. То есть, чем позже делать, тем точнее результат, но и тем уже диапазон начальных промахов, из которых она может выкарабкаться. Что, по большому счету, некритично: у блока Л начальная точность охрененная, а подбирать время пусков довольно несложно.

Передвижка коррекции сразу вызвала необходимость коррекции посадочного автопилота: он откровенно зарывается (и бьется) на очень крутых траекториях, а они с точной коррекцией как раз такими и получаются Улыбка. В общем, решу в рабочем порядке.

"Прокол", который отметил Eraser_stp (пересвист Луны на слишком большом ускорении времни) тоже будет невозможен. Там уже сейчас стоит несколько простых защиток на критические маневры, а в окончательном сервисе эта защита поумнеет: будет своевременно хватать за руку, но не будет путаться под ногами, когда это не нужно.

В общем, интересный сейчас период работы! Улучшения идут валом - но и работы до черта! Совсем запутался...
    Добавлено: 19:45 28-11-2007   
Канал Orbiter: «Луна-9-10: разработка.»
На страницу: Пред.  1, 2, 3, 4, 5 ... 11, 12, 13  След.    Перейти:   Все страницы
  
Показать: 
Предыдущая тема | Следующая тема |
К списку каналов | Наверх страницы
Цитата не в тему: Я их профили рассматриваю долгими зимними вечерами и вспоминаю, кто из них кто? (Pinocchio об обитателях его аськи)

  » Луна-9-10: разработка. | страница 4
Каналы: Новости | Elite | Elite: Dangerous | Freelancer | Star Citizen | X-Tension/X-BTF | X2: The Threat | X3: Reunion | X3: Terran Conflict | X Rebirth | X4: Foundations | EVE Online | Orbiter | Kerbal Space Program | Evochron | VoidExpanse | Космические Миры | Онлайновые игры | Другие игры | Цифровая дистрибуция | play.elite-games.ru | ЗВ 2: Гражданская война | Творчество | Железо | Игра Мечты | Сайт
   Дизайн Elite Games V5 beta.18