ВНИМАНИЕ! Наша конференция посвящена космической тематике и компьютерным играм. Политические вопросы и происходящие в мире события в данный момент на нашем сайте не обсуждаются!
|
» Луна-9-10: разработка. | страница 4 |
|
|
|
Канал Orbiter: «Луна-9-10: разработка.» |
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Атчет о праисхадящем: циклограмма продвигается весьма быстро и пока успешно, скоро альфу можно обновлять. Зарекался использовать указатели на функции, а все равно пришлось делать через них .
Bloodest,
Спасибо, очень интересно! И камешки такие знакомые-знакомые И солнечная батарея торчит из-под посадочной ноги, как крыло раздавленной бабочки. (За марсоходами я уж который год слежу в не менее чем еженедельном режиме). Аддон впечатляет весьма, хотя это, конечно, отдельный проект. И с несколько другой направленностью, чем у меня. Я как раз не стремлюсь к исторической идентичности человеческих операций, что пилотов, что дистанционно. Уж очень они сложны и специфичны, слишком много контекста требуют, и переучивания на каждую новую машину - а это сужает круг потенциальных пользователей... Но про фотопанель я как раз что-то такое и думал, это очнеь близко!
Динамическая замена мешей и целых объектов на посадке - прием немного стремноватый (требут аккуратности), но очень эффективный, а когда как следует настроен - то и эффектный. Я вот с циклограммой сижу, а голова фоном продолжает думать и об этом тоже... При подлете на крутой траекториии (а именно так и надо подлетать) мы ведь можем довольно заранее просчитать район посадки. И опять-таки заранее создать в нем наземный объект, вроде космодрома, с текстурой лунной поверхности. Можно даже несколько объектов, если у них есть ограничения на размер текстуры. Примерно то же, что делает тот "рельефный" аддон, только для начала без рельефа. Тогда и посадка будет красивее, и порожденный кратер (если что) лучше впишется.
Это же можно будет делать и с рельефом - раз мы его сами порождаем, значит, у нас будет карта высот, и можно будет "приземлять" аппарат на рельеф, и даже путешествовать по нему, играясь точками touchdown. Я так сейчас и делаю, только на нулевой базе. Другое дело, что с рельефными, трехмерными посадочными площадками я бы сначала поигрался в Армадилло 3-й версии. Там они куда более функциональны (не просто для красоты), да и аппарат куда более приспособлен для отладки множественных взлетов-посадок, чем одноразовый лунник. Вот, кстати, иллюстрация "фазовой" разработки: задуманы эти фичи были аж в самой первой версии, а практически к ним (надеюсь!) удастся подобраться только в третьей...
|
|
|
Thorton
87 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(36) Репутация: 12 Сообщения: 696 Откуда: Томск Зарегистрирован: 15.05.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Igel,так мне рисовать лендер со встроенной панорамой или будешь делать по варианту Bloodest'а?
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Так фиг его знает . Мы ж окончательно пока ничего не решили...
Вариант Bloodest-а - верняк, практически никакого технического риска плюс интересные варианты развития. И не должен быть трудоемким (при таком-то примере). Но требует от пилота хотя бы минимальной работы с панелью (найти и показать).
Вариант со встроенной панорамой ничего от пилота не требует и вообще более всего по своему месту в проекте близок к финальному Интернационалу Луны-10 (т.е., красивая и изяшная фенечка, подчеркивающий штришок). Но технический риск серьезный: много неопределенности, не факт что получится вообще и что будет смотреться универсально на разных настройках. Трудоемкость... не знаю, может быть, достаточно небольшая, чтобы все равно попробовать, даже зная, что может не выйти. Да и задел, глядишь, еще для чего-нибудь пригодится.
А выбирать "который из вариантов" сейчас рано. Я работаю по agile-методике, а она совершенно разумно "не велит" делать такие выборы раньше, чем "окончательно припрет"
|
|
|
Bloodest
155 EGP
![Бронзовая звезда (+25 EGP)](/conference/images/ranks/medals/bronze.gif) ![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
![Вы не можете голосовать](images/tool_cool.gif) |
|
Гы, опять же, посадка на меш- шоб стоял папарат на нем , а не провалился под.
Самописного кода не много, вся математика взята из книги Борескова и Ко включая вектора и проч.
Значиться модуль называется 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 раз(а) |
|
|
Bloodest
155 EGP
![Бронзовая звезда (+25 EGP)](/conference/images/ranks/medals/bronze.gif) ![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
![Вы не можете голосовать](images/tool_cool.gif) |
|
Ну и картинки,
Отделился блок Д, включен "Радар" и он видит поверхность меша - 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
Ну при всем при этом шарик Луны на полтора метра ниже кратера Сервейер - в меше есть ямка и поглубже.
|
|
|
Бука
63 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 2(10) Репутация: 12 Сообщения: 67 Откуда: Анапа Зарегистрирован: 10.03.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Ааа!!!!!
Bloodest, умоляю - дай наконец на 11А52 полетать....
Хоть на сырой, но очеееееень хочется.
Я твой аддон уже два года жду!!!!
_________________ Земля - слишком маленькая и хрупкая корзина, чтобы человечество держало в ней все свои яйца... |
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Тоже до боли знакомый интерьерчик . А что он за палку от Сервейера отломал? Там вроде американы сами все, что можно было безопасно унести, унесли (я, кстати, лицезрел евойную телекамеру живьем, в музее. Вроде и ничего особенного - но как подумаешь про ее путешествия...)
Да, аддон... обещающий!
Код - немедленно в авоську! Пригодится, и, возможно, раньше, чем я думаю.
Теперь о себе любимом . Доделал автопилот посадки, получилось даже реалисточнее, чем собирался. Внутренне реалисточнее: по используемым параметрам нет практически ничего, к чему не имели доступа реальные моги реального аппарата. Получилось как-то само собой. Вот только версию собрать не смогу пока еще несколько дней: все потроха наружу. Теперь хочу сразу по горячим следам добавить орбитальный автопилот для Луны-10. От этого наверняка разъедется имеющаяся циклограмма, ну и ладо: как сломаю, так и починю, а делать это все равно надо будет, так пусть лучше сейчас. И сохранение-восстановление циклограммы и автопилота - отдельная песня, довольно трудоемкая. Да еще добавить отрубание всего этого для ручного режима... Но ничего - зато весь этот "темный угол" кода будет стабилизирован как следует и надолго, оно того стоит.
|
|
|
Bloodest
155 EGP
![Бронзовая звезда (+25 EGP)](/conference/images/ranks/medals/bronze.gif) ![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
![Вы не можете голосовать](images/tool_cool.gif) |
|
Ну палка как и красный прицел над Аполло - заглушки. Палка - эт сборник образцов (будущий), типа не как у амеров (тот значительно короче) палка-хваталка, а спец бункер, внутри фторопластовая трубка - тырк в грунт образец попадает в трубку - жим на кнопку, образец пережимается кольцом и поднимается по бункеру-палке - получается навроде сосисек. Потом связка сосисек выталкивается в спец-бэг на ЛК.
Круг - передатчик Лунохода.
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Новая альфа. Полная версия 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. В некоторые (низковысотные лунные) сценарии добавлена опция, запускающая их с выключенным автопилотом.
В целом, стабильность новой альфы может несколько ухудшиться по сравнению с предыдущей. Это такой этап разработки, когда внутренняя сложность кода нарастает очень быстро. Ничего страшного, ближе к бете стабильность снова будет расти.
Следующий большой этап - автопилот коррекции. В нем два отдельных этапа и я уже знаю, как буду их делать. С направлением вектора придется жулить, как в Лайке (строить его в высотных координатах), но никто этого не заметит, потому что приходить в него я буду, конечно же, в одно движение. Параллельно с этой задачей (или последовательно, как получится) с автопилотом коррекции - еще две достаточно трудоемких задачи. Первая - отладка и "вылизывание" взаимодействия пилота с аддоном, интерфейса "человек-машина" тут же - сохранение-восстаовление сценария. Вторая - "окрасивливание" обломков.
|
|
|
Thorton
87 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(36) Репутация: 12 Сообщения: 696 Откуда: Томск Зарегистрирован: 15.05.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Нашел следующие недоработки:
- у орбитера Луны 10 не раскрывается антенна
- при работе тормозных двигателей, клавиша должна Е выключать основной двигатель, но визуально это не отображается, т.е. в HUD видно, что тяга упала,но во внешнем виде все также горят пять факелов. Далее если нажать *, то отключатся только 4 маленьких движка, а основной будет продролжать работать, но приэтом в худ тяга будет показываться равной 0, нотоплива будет продолжать расходоваться
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Спасибо!
Про антенну - даже не знал, что она раскрывается . Сделаю, конечно.
Клавиша Е иногда как-то странно глючит. Именно описанный глюк не наблюдал, но может быть. Клавишей * я обычно не пользуюсь, тоже может глючить. Орбитер, похоже, не очень хорошо относится к тому, что число сопел в группе меняется "на лету". В автопилоте посадки я сначала пытался просто вызывать ту же клавишу Е, была задница. Пришлось скопировать код и адаптировать. Побочные эффекты исчезли, когда я перед перетряской группы сопел сначала выключил двигатель. Когда дойдут руки - попробую то же самое сделать в коде клавиши Е, и может быть, снова его консолидировать.
|
|
|
Eraser_stp
60 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 1(9) Репутация: 2 Сообщения: 177
Зарегистрирован: 14.06.2007
![Вы не можете голосовать](images/tool_cool.gif) |
|
Луна-9 нормально запустилась и отработала даже в последней бете Орбитера с DX3D9-клиентом. Отличная работа!
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Это хорошо, спасибо! Чем шире тестирование и варианты, тем лучше!
Выходные получились сумасшедшие, но успел и поработать немножко. Главное - сделал коррекцию, работает отлично. То есть, цепочка управления теперь замкнута полностью, ручных этапов не осталось. "На Луну в одну кнопку" работает! Пока не выкладываю - надо еще подправить коррекцию для Луны-10, у нее чуть иные критерии и параметры. Плюс теперь, когда подлетные режимы стали более вероятностными, обнаружил некоторые "дыры" в посадочном автопилоте. Слишком узкая зона нормального прилета, а реальный разброс получается немаленький. То совсем аппарат зароется, то щуп не успеет выпустить, то наоборот, зависнет над самой поверхностью... Надо будет еще подстроить.
В общем, следующая неделя - доработка недоработок, ликвидация замечаний, багов, явных некрасивостей и неточностей. Ну и дальше - работа уже чисто "на красоту".
|
|
|
Bloodest
155 EGP
![Бронзовая звезда (+25 EGP)](/conference/images/ranks/medals/bronze.gif) ![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(40) Репутация: 18 Сообщения: 944 Откуда: Питерские мы Зарегистрирован: 07.10.2004
![Вы не можете голосовать](images/tool_cool.gif) |
|
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 <<<
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Спасибо! На голый - да, может быть. Некоторые сценарии имеют блок Л в явном виде (еще приаттаченный), некоторые могут иметь его рудименты. Хотя я стараюсь из тестовых сценариев все нерелевантное (отвалившееся) вычищать, мог забыть. Но эти вещи допустимы даже в бете: аддон не расчитан на отдельный релиз. А если и будет когда релизиться или размещаться отдельно - в доке придется прописывать зависимости от блока Л (да и вообще от всего семерочного пакета - для сценариев старта с Земли). Впрочем, до релиза еще пока дальше, чем мне уже хотелось бы
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
У меня небольшая просьба к тестировщикам: теперь, фазе "выглаживания" - обращайте внимание на общее взаимодействие "человек-машина". Особенно на индикацию! Текстовые сообщения, которые недостаточно очевидны, лишние сообщения, сообщения, которых вы ждали, но которые не появились... события, происходящие "вдруг", непонятно почему, без предупреждения...
Еще вопрос - как лучше выводить строковые сообщения - в аннотации или в строке внизу экрана, или оба варианта в зависимости от сообщения? Какие где?
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Обновил версию. Линки те же, 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 м/с. "Зарыться" может по-прежнему, тут я ничего не трогал. Впрочем, в крайних тестах ни разу не зарывался.
Если ничего не наглючил, то это, скорее всего, будет крайняя "техническая" альфа. Главная задача - от площадки Байконура до раскрытия лепестков в лунной пыли в одну кнопку - решена. вчера в первый раз так и пролетел, с удовольствием. Ну разве что за вычетом одного сохранения, очистки и восстановления сценария из-за знаменитого "фокусного бага" семерки.
Остались красивости, удобства и сервисы. Теперь следующий апдейт будет не так скоро. Список улучшений и доработок сейчас - десятка на три позиций, если не больше. вместо того, чтобы улучшать по крохам, я лучше пройдусь по нему капитально и тщательно. Следующая большая цель - статус беты. Это когда изделие в принципе "готово для публики".
|
|
|
Eraser_stp
60 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 1(9) Репутация: 2 Сообщения: 177
Зарегистрирован: 14.06.2007
![Вы не можете голосовать](images/tool_cool.gif) |
|
Боюсь с DX3D9-клиентом я ввёл в заблуждение, оказывается у меня работал обычный орбитеровский, просто надо было запускать экзешник с неграфическим движком.
Кроме упомянутого фокусного глюка, всё работает нормально. Был только один пролёт мимо Луны, когда я включил ускорение 10000х после MCC.
|
|
|
Thorton
87 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 3(36) Репутация: 12 Сообщения: 696 Откуда: Томск Зарегистрирован: 15.05.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Глюк нашел какой-то странный
http://rapidshare.com/files/72861924/orbiter_2007-11-28_18-59-24-84_.avi.html
Полет был полностью на автопилоте.
|
|
|
igel
100 EGP
![Ветеран Elite-Games (15 лет)](/conference/images/ranks/medals/veteran15.png) Рейтинг канала: 4(86) Репутация: 14 Сообщения: 755
Зарегистрирован: 12.06.2006
![Вы не можете голосовать](images/tool_cool.gif) |
|
Это не глюк . Это она тягу регулирует. Видит, что слишком резво тормозит, и сбрасывает. А дроссель очень медленный
Скорость дросселя я по ходу подберу, чтобы побыстрее работал, но и чтобы визуально не мерцал слишком уж. Вообще там по ходу много подстроек идет.
Например, коррекция передвигается со 100 Мм на 50 или 70, еще не знаю... пока пробую на 50, но нужно больше статистики набрать, а то там тонкий баланс между точностью результата и затратами топлива. То есть, чем позже делать, тем точнее результат, но и тем уже диапазон начальных промахов, из которых она может выкарабкаться. Что, по большому счету, некритично: у блока Л начальная точность охрененная, а подбирать время пусков довольно несложно.
Передвижка коррекции сразу вызвала необходимость коррекции посадочного автопилота: он откровенно зарывается (и бьется) на очень крутых траекториях, а они с точной коррекцией как раз такими и получаются . В общем, решу в рабочем порядке.
"Прокол", который отметил Eraser_stp (пересвист Луны на слишком большом ускорении времни) тоже будет невозможен. Там уже сейчас стоит несколько простых защиток на критические маневры, а в окончательном сервисе эта защита поумнеет: будет своевременно хватать за руку, но не будет путаться под ногами, когда это не нужно.
В общем, интересный сейчас период работы! Улучшения идут валом - но и работы до черта!
|
|
|
|
|
|
Канал Orbiter: «Луна-9-10: разработка.» |
|
К списку каналов | Наверх страницы |
Цитата не в тему: Я их профили рассматриваю долгими зимними вечерами и вспоминаю, кто из них кто? (Pinocchio об обитателях его аськи)
|
» Луна-9-10: разработка. | страница 4 |
|