Aces High Bulletin Board
General Forums => Open Beta Test => Topic started by: caldera on January 24, 2016, 10:45:50 AM
-
Some time ago, you stated that in the future, you "would change the way bomber drone positioning is handled" - IIRC.
Just wanted to remind you to please work that into AH3 before beta is finished, thanks. :cheers:
-
Thanks for the reminder, Your welcome to remind me again in about a month. Will get to it after all is stable.
HiTech
-
(http://i343.photobucket.com/albums/o460/caldera_08/nigri-bouncing.gif~original) (http://s343.photobucket.com/user/caldera_08/media/nigri-bouncing.gif.html)
Thank You!!!
-
Thanks for the reminder, Your welcome to remind me again in about a month. Will get to it after all is stable.
HiTech
context, remind us again what the reminder and reference is??
-
(http://i343.photobucket.com/albums/o460/caldera_08/nigri-bouncing.gif~original) (http://s343.photobucket.com/user/caldera_08/media/nigri-bouncing.gif.html)
Thank You!!!
How can I turn that gif into my avatar
-
Thanks for the reminder, Your welcome to remind me again in about a month. Will get to it after all is stable.
HiTech
It's been a month now. Just checking in to remind you about the reminder. :)
-
It's been a month now. Just checking in to remind you about the reminder. :)
Thanks this will be a good week to do it, only thing on my list to do is bug fixes.
HiTech
-
Thank you sir! :salute
(http://i343.photobucket.com/albums/o460/caldera_08/puppies.jpg~original) (http://s343.photobucket.com/user/caldera_08/media/puppies.jpg.html)
I did at first buy you some very expensive scotch, but was worried that it might be damaged in transit.
That left me no choice but to consume it for safe keeping. :cheers:
-
That left me no choice but to consume it for safe keeping. :cheers:
Thank you very much for the thoughtfulness in keeping my scotch safe.
If ever I can return the favor , don't hesitate to ask.
HiTech :)
-
only thing on my list to do is bug fixes.
HiTech
and Oculus Rift support... right?
-
and Oculus Rift support... right?
Actually I put about 10 hours in today at home writing the generic 2 eyes piece of the code.(this will is set up to be used with any type 3d like glasses)
Just rapped it up now after one strange minor thing has me by the short hairs.
If anyone is interested
This is my work starting from scratch today. Only had a vague idea of the design when I started.
Plus all the integration that has it all working except for a very strange zbuffer issue.
I did take a brake to make fry scallops for my family.
#include "system/syscfg.h"
#include <math.h>
#include "eyes/eyestype.h"
#include "cmr/cmrtype.h"
#include "rend/rendtype.h"
#include "ma/matype.h"
#include "gr3d/gr3drect.h"
#include "shdr/shdrtype.h"
#include "shdr/shdrpost.h"
typedef struct tag_EYE_DATA
{
int CurrentEyeCnt;
eyesEYE Eyes[eyesEI_MAX];
int EyeBeingRenderd;
float FOVScale;
int UseOneRenderTarget;
int InterlaceFrames;
} _EYE_DATA;
static _EYE_DATA _eyesData;
void eyesInit(int EyeCnt,int InterlaceFrames)
{
eyesKill();
_eyesData.CurrentEyeCnt = EyeCnt;
_eyesData.InterlaceFrames = InterlaceFrames;
if (EyeCnt == 1)
{
return;
}
}
void eyesKill(void)
{
if (_eyesData.CurrentEyeCnt != 0)
{
rendtargReleaseRenderTarget(&_eyesData.Eyes[eyesEI_LEFT].RenderTarget);
if (!_eyesData.InterlaceFrames)
{
rendtargReleaseRenderTarget(&_eyesData.Eyes[eyesEI_RIGHT].RenderTarget);
}
memset(&_eyesData, 0, sizeof(_EYE_DATA));
}
}
int eyesInitEye(int EyeIndex,
const mafPOINT * CameraOffset,
const eyesFIELD_OF_VIEW * Fov,
const grRECT * EyeRect,
int TargetWidth,
int TargetHeight,
int ImageFormat,
int DepthFormat,
int PopulateRenderTarget)
{
eyesEYE * Eye;
if (EyeIndex == eyesEI_LEFT && !PopulateRenderTarget)
{
return -1;
}
Eye = &_eyesData.Eyes[EyeIndex];
Eye->Fov = *Fov;
Eye->PortRect = *EyeRect;
Eye->Offset = *CameraOffset;
if (PopulateRenderTarget)
{
rendtargPopulateRenderTarget(&Eye->RenderTarget, TargetWidth, TargetHeight, ImageFormat, DepthFormat);
Eye->RenderTarget.PortRect = Eye->PortRect;
_eyesData.UseOneRenderTarget = 0;
}
else
{
_eyesData.UseOneRenderTarget = 1;
}
return 0;
}
void eyesCalcEyeCamera(int EyeIndex, cmrCAMERA * EyeCamera,const cmrCAMERA * PrimaryCamera)
{
eyesEYE * Eye;
eyesFIELD_OF_VIEW ScaledFov;
maf4X4_MATRIX ProjMatrix;
float Width;
float Height;
madPOINT AtPnt;
madPOINT ViewPnt;
Eye = &_eyesData.Eyes[EyeIndex];
_eyesData.FOVScale = eyesCalcEyeFovScale(EyeIndex, PrimaryCamera->HorizontalFOV);
ScaledFov.LeftTan = _eyesData.Eyes[EyeIndex].Fov.LeftTan * _eyesData.FOVScale;
ScaledFov.RightTan = _eyesData.Eyes[EyeIndex].Fov.RightTan * _eyesData.FOVScale;
ScaledFov.UpTan = _eyesData.Eyes[EyeIndex].Fov.UpTan * _eyesData.FOVScale;
ScaledFov.DownTan = _eyesData.Eyes[EyeIndex].Fov.DownTan * _eyesData.FOVScale;
eyesFillProjectionMatrix(&ScaledFov, &ProjMatrix, PrimaryCamera->NearPlane, PrimaryCamera->FarPlane);
Width = (float)(_eyesData.Eyes[EyeIndex].PortRect.Right - _eyesData.Eyes[EyeIndex].PortRect.Left);
Height = (float)(_eyesData.Eyes[EyeIndex].PortRect.Bottom - _eyesData.Eyes[EyeIndex].PortRect.Top);
cmrSetProjectionMatrix(EyeCamera,&ProjMatrix,PrimaryCamera->NearPlane, PrimaryCamera->FarPlane,(float)Width / Height,0);
EyeCamera->HorizontalFOV = (float)atan((ScaledFov.LeftTan + ScaledFov.RightTan) * 0.5f) * 2.0f;
maADD_POINTS(ViewPnt, PrimaryCamera->ViewPnt, Eye->Offset);
maADD_POINTS(AtPnt, ViewPnt, PrimaryCamera->Fwd);
cmrLookAt(EyeCamera, &ViewPnt, &AtPnt, &PrimaryCamera->Up);
}
void eyesBindEye(int EyeIndex,const cmrCAMERA * PrimaryCamera)
{
eyesCalcEyeCamera(EyeIndex, &_eyesData.Eyes[EyeIndex].Camera, PrimaryCamera);
cmrActivateCamera(&_eyesData.Eyes[EyeIndex].Camera);
rendtargBindRenderTarget(&_eyesData.Eyes[EyeIndex].RenderTarget);
rendportSetPort(&_eyesData.Eyes[EyeIndex].PortRect,0.0f,1.0f);
}
const cmrCAMERA * eyesGetCurrentCamera(void)
{
return &_eyesData.Eyes[_eyesData.EyeBeingRenderd].Camera;
}
int eyesBeginRender(const cmrCAMERA * PrimaryCamera)
{
int EyeIndex;
if (_eyesData.CurrentEyeCnt == 0)
{
return -1;
}
if (_eyesData.CurrentEyeCnt == 1)
{
_eyesData.Eyes[eyesEI_LEFT].Camera = *PrimaryCamera;
return 1;
}
if (_eyesData.InterlaceFrames)
{
_eyesData.EyeBeingRenderd = !_eyesData.EyeBeingRenderd;
}
else
{
_eyesData.EyeBeingRenderd = eyesEI_LEFT;
}
EyeIndex = _eyesData.EyeBeingRenderd;
eyesBindEye(EyeIndex,PrimaryCamera);
rendportClearPort();
if (_eyesData.InterlaceFrames)
{
return 1;
}
else
{
return 2;
}
}
int eyesBeginNextEye(const cmrCAMERA * PrimaryCamera)
{
int EyeIndex;
if (_eyesData.InterlaceFrames)
{
return -1;
}
if (_eyesData.CurrentEyeCnt < 2)
{
return -1;
}
EyeIndex = _eyesData.EyeBeingRenderd;
rendtargUnBindRenderTarget(&_eyesData.Eyes[EyeIndex].RenderTarget);
_eyesData.EyeBeingRenderd = eyesEI_RIGHT;
EyeIndex = _eyesData.EyeBeingRenderd;
/* We need to copy every frame incase the target Changed */
if (_eyesData.UseOneRenderTarget)
{
_eyesData.Eyes[eyesEI_RIGHT].RenderTarget = _eyesData.Eyes[eyesEI_LEFT].RenderTarget;
_eyesData.Eyes[eyesEI_RIGHT].RenderTarget.PortRect = _eyesData.Eyes[eyesEI_RIGHT].PortRect;
}
eyesBindEye(EyeIndex, PrimaryCamera);
return 0;
}
void eyesEndRender(void)
{
int EyeIndex;
if (_eyesData.CurrentEyeCnt < 2)
{
return ;
}
EyeIndex = _eyesData.EyeBeingRenderd;
rendtargUnBindRenderTarget(&_eyesData.Eyes[EyeIndex].RenderTarget);
}
void eyesFillProjectionMatrix(const eyesFIELD_OF_VIEW * EyeFov, maf4X4_MATRIX * Matrix, float Near, float Far)
{
mafPOINT_W ScaleAndOffset;
//float ProjMult;
float Q;
eyesCreateNDCScaleAndOffsetFr omFov(EyeFov, &ScaleAndOffset);
Q = Far / (Far - Near);
Matrix->Cell[0][0] = ScaleAndOffset.x;
Matrix->Cell[0][1] = 0.0f;
Matrix->Cell[0][2] = 0.0f;
Matrix->Cell[0][3] = 0.0f;
Matrix->Cell[1][0] = 0.0f;
Matrix->Cell[1][1] = ScaleAndOffset.y;
Matrix->Cell[1][2] = 0.0f;
Matrix->Cell[1][3] = 0.0f;
Matrix->Cell[2][0] = ScaleAndOffset.z;
Matrix->Cell[2][1] = ScaleAndOffset.w;
Matrix->Cell[2][2] = Q;
Matrix->Cell[2][3] = 1.0f;
Matrix->Cell[3][0] = 0.0f;
Matrix->Cell[3][1] = 0.0f;
Matrix->Cell[3][2] = -Near * Q;
Matrix->Cell[3][3] = 0.0f;
}
void eyesCalcSimpleFov(eyesFIELD_OF_VIEW * Fov, float HorizontalFOV, float WidthOverHeightAspect)
{
float VertFOV;
Fov->LeftTan = (float)tan(HorizontalFOV * 0.5);
Fov->RightTan = (float)tan(HorizontalFOV * 0.5);
VertFOV = cmrCalcVerticalFOV(HorizontalFOV, WidthOverHeightAspect);
Fov->UpTan = (float)tan(VertFOV * 0.5);
Fov->DownTan = Fov->UpTan;
}
void eyesCreateNDCScaleAndOffsetFr omFov(const eyesFIELD_OF_VIEW * EyeFov, mafPOINT_W * Rtn)
{
float projXScale = 2.0f / (EyeFov->LeftTan + EyeFov->RightTan);
float projXOffset = (EyeFov->LeftTan - EyeFov->RightTan) * projXScale * 0.5f;
float projYScale = 2.0f / (EyeFov->UpTan + EyeFov->DownTan);
float projYOffset = (EyeFov->UpTan - EyeFov->DownTan) * projYScale * 0.5f;
Rtn->x = projXScale;
Rtn->y = projYScale;
Rtn->z = projXOffset;
Rtn->w = projYOffset;
// Hey - why is that Y.Offset negated?
// It's because a projection matrix transforms from world coords with Y=up,
// whereas this is from NDC which is Y=down.
}
float eyesCalcEyeFovScale(int EyeIndex, float HorizontalFOV)
{
eyesEYE * Eye;
float BaseTan;
float NewTan;
Eye = &_eyesData.Eyes[EyeIndex];
BaseTan = Eye->Fov.LeftTan + Eye->Fov.RightTan;
NewTan = (float)tan(HorizontalFOV * 0.5) * 2.0f;
return BaseTan / NewTan;
}
void eyesRenderToScreen(void)
{
grRECT Rect;
if (_eyesData.CurrentEyeCnt < 2)
return;
rendstateSetZBufferEnable(0);
shdrpostBindTech(shdrpostPTI_COPY);
shdrBindTextures(_eyesData.Eyes[eyesEI_LEFT].RenderTarget.ImageTexId, -1, NULL);
gr3drectRenderScreenQuadRect(&_eyesData.Eyes[eyesEI_LEFT].PortRect,0.0f);
shdrBindTextures(_eyesData.Eyes[eyesEI_RIGHT].RenderTarget.ImageTexId, -1, NULL);
Rect = _eyesData.Eyes[eyesEI_LEFT].PortRect;
Rect.Left = Rect.Right;
Rect.Right *= 2;
gr3drectRenderScreenQuadRect(&Rect,0.0f);
shdrpostUnBindTech(shdrpostPTI_COPY);
shdrBindTextures(-1, -1, NULL);
}
HiTech
-
<--- dry humping HTs leg.
:x
-
<--- dry humping HTs leg.
:x
I think he'd prefer the scotch.
-
Sorry to jump in here...and I know nothing of computer coding....
But I can not even begin to understand how all those different lines of text and characters make my cartoon airplane fly...
Is that was tells the 3d models what to do??? As a matter of fact...now I really don't know how this game even works now :uhoh
When I pull the trigger are each of those tracer rounds that see some line of code that is interacting with other lines of code...
I'll stop now.... :salute Hitech for all the hours of fun you provide for us...
-
Jeez HiTech... where is the assbly code!
Thats the only code I understand :bhead
-
HT I was thinking about the corner text issue with the VR stuff.
Perhaps a secondary clipboard fixed in the knee position that appears when you look down would address it? The reason I say appears when you look down is that being in vehicle gunsights is a fixed forward view, so it needs to toggle for that environment.
It would be nice to have it on a knee but I know that'd be a huge amount of work and some dropped fps. Though it does add to the immersion. ED has a pilot figure rendered, and it's the freakiest thing when your playing with a HOTAS setup. When you take your hand of the stick your mind does a kind of 'take 2' is the ingame arm doesn't move - I still get freaked by it. But their pilot layouts are the same on each ship.
-
HT I was thinking about the corner text issue with the VR stuff.
Perhaps a secondary clipboard fixed in the knee position that appears when you look down would address it? The reason I say appears when you look down is that being in vehicle gunsights is a fixed forward view, so it needs to toggle for that environment.
It would be nice to have it on a knee but I know that'd be a huge amount of work and some dropped fps. Though it does add to the immersion. ED has a pilot figure rendered, and it's the freakiest thing when your playing with a HOTAS setup. When you take your hand of the stick your mind does a kind of 'take 2' is the ingame arm doesn't move - I still get freaked by it. But their pilot layouts are the same on each ship.
When my 4 year old daughter plays with it she keeps saying "Where are my hands".
HiTech
-
When my 4 year old daughter plays with it she keeps saying "Where are my hands".
HiTech
Perhaps this might work for such occasions? From several accounts, Leap Motion sensors recently got a useful firmware update, called Orion, which makes them viable for some things. It's a third-party solution, of course, but might be also serve as a pass-through camera (as seen in this link; demo in use with a Rift): https://developer.leapmotion.com/gallery/quick-switch (https://developer.leapmotion.com/gallery/quick-switch)
BTW, the "several accounts" can be found here: https://www.reddit.com/r/oculus/search?q=leap+motion+orion (https://www.reddit.com/r/oculus/search?q=leap+motion+orion)
FWIW,
-
The corner text issue is not just a VR problem it is also a problem with a large monitor like the large 4K tvs available at reasonable prices.
Terry
-
I'm trying to think of all the items this effects.
1. The R for recording.
2. The Name of voice transmitions.
3. The hud speed and alt.
4. Possibly the damage display.
Any others?
My thought for fix is simply to make them dragable to where you want them displayed.
HiTech
-
5. Attitude indicator
6. Heading indicator
7. Vertical speed indicator
Just think about flying what you would need if you're in clouds?
-
Damn thread hijackers. :neener:
HiTech, will the length of the drone leash be adjusted, in addition to the removal of warping? What about bombers performing steep dives, climbs and Immelmans, while keeping their drones?
-
Any others?
HiTech
The gun round count in tank commander view and manned gun views and the range info in SB view?
-
Damn thread hijackers. :neener:
HiTech, will the length of the drone leash be adjusted, in addition to the removal of warping? What about bombers performing steep dives, climbs and Immelmans, while keeping their drones?
Nothing will change in the drone code, only thing that is changing is how your drones are displayed to other people.
HiTech
-
Reminder: :pray
Water craft can't travel under bridges. :cry
-
I'm trying to think of all the items this effects.
1. The R for recording.
2. The Name of voice transmitions.
3. The hud speed and alt.
4. Possibly the damage display.
Any others?
My thought for fix is simply to make them dragable to where you want them displayed.
HiTech
5. Attitude indicator
6. Heading indicator
7. Vertical speed indicator
Just think about flying what you would need if you're in clouds?
8. The location of my bottle of Jim Beam behind the seat.. :cheers:
-
5. Attitude indicator
6. Heading indicator
7. Vertical speed indicator
Just think about flying what you would need if you're in clouds?
We are not talking about instruments, we are talking about how the VR ocullas head set will not let you see the corners of the screen. Hence any text we put there can not be viewed.
HiTech
-
My thought for fix is simply to make them dragable to where you want them displayed.
HiTech
That will also be nice for triple monitors.
-
Bomber calibration screen.
Gunner position.
Plane position.
-
Vehicle and manned gun range settings/ammo remaining/ammo selected/mode selected).
Some of the vehicle range indicators are quite hard to read (e.g. panther).
Dragable is nice, but I like not having to much clutter in my view. Also the headset is not like a screen, dragging these to the edge of your view doesn't help, they need to be a readable spot (imagine the screen center is readable, then slowly becomes peripheral version as you move out). Which is why I thought a kneepad would be better. No clutter, and if you want to read these you just look down (currently dead space in the view).
-
Vehicle and manned gun range settings/ammo remaining/ammo selected/mode selected).
Some of the vehicle range indicators are quite hard to read (e.g. panther).
Dragable is nice, but I like not having to much clutter in my view. Also the headset is not like a screen, dragging these to the edge of your view doesn't help, they need to be a readable spot (imagine the screen center is readable, then slowly becomes peripheral version as you move out). Which is why I thought a kneepad would be better. No clutter, and if you want to read these you just look down (currently dead space in the view).
That's a good approach that fits right in with methods that VR devs seem to be increasingly adopting; that is, incorporating 2D GUI elements directly into the VR environment.
This is a good article on the whole subject of VR GUI's, HT: https://backchannel.com/immersive-design-76499204d5f6#.n2emorgld (https://backchannel.com/immersive-design-76499204d5f6#.n2emorgld)
FWIW,
-
How bout voice commands and text to speech capability on a special vox channel. Say "status" and the the game would audibly saying "airspeed 264, altitude 1400, heading 305". Say "communications on, communications off" to toggle audible reading of the text buffer, ect.....
Sent from my SAMSUNG-SM-N900A using Tapatalk
-
Here it is 2016 and still no .orderpizza dot command....Tsk tsk, hitech is slackin' in his golden years :D
-
Some time ago, you stated that in the future, you "would change the way bomber drone positioning is handled" - IIRC.
Just wanted to remind you to please work that into AH3 before beta is finished, thanks. :cheers:
No offense mate, but how the hell is anyone going to interpret that unless you the poster of the original complaint has some pre-conceived idea of what that is?
-
No offense mate, but how the hell is anyone going to interpret that unless you the poster of the original complaint has some pre-conceived idea of what that is?
The message was for me, I had asked him to remind me, and I knew exactly what it was about.
HiTech
-
Here it is 2016 and still no .orderpizza dot command....Tsk tsk, hitech is slackin' in his golden years :D
LOL or BEER
-
Gramp,
Sometimes in AH2 the two bomber drones perform micro warps at the worst possible moment for an attacking fighter. One of three outcomes happens.
1. - You pull the trigger and the bomber drones suddenly warp away from your rounds.
2. - The drones suddenly warp into your flight path causing you to receive the loosing end of a collision message.
3. - Each time you get near the bomber box, the drones warp behind you.
Over the years it has been a considerable source of angst in our community. Long time players of AH2 know what Caldera's reminder is also.
-
That's a good approach that fits right in with methods that VR devs seem to be increasingly adopting; that is, incorporating 2D GUI elements directly into the VR environment.
This is a good article on the whole subject of VR GUI's, HT: https://backchannel.com/immersive-design-76499204d5f6#.n2emorgld (https://backchannel.com/immersive-design-76499204d5f6#.n2emorgld)
FWIW,
Possibly more grist for your VR mill, HT. I happened upon this just now; a Reddit sub devoted to VR UI design considerations and discussion. It appears new, where someone collected diverse info sources regarding the VR UI topic to get the ball rolling. May be useful to you, maybe not, but seemed relevant to this thread, so here is the link, just in case:
https://www.reddit.com/r/VRUI (https://www.reddit.com/r/VRUI)
FWIW,
-
Possibly more grist for your VR mill, HT. I happened upon this just now; a Reddit sub devoted to VR UI design considerations and discussion. It appears new, where someone collected diverse info sources regarding the VR UI topic to get the ball rolling. May be useful to you, maybe not, but seemed relevant to this thread, so here is the link, just in case:
https://www.reddit.com/r/VRUI (https://www.reddit.com/r/VRUI)
FWIW,
Got occullas t all up and working in game Sunday. I all ready see things like the clip board and other gui elements should be fixed in 3d space.
Others like the stuff in the corners should not because they are meant to always be in view.
Did a bunch of test gui work, things like 3d cursor and such. Not ready for prime time, but gave me the basics for what needs to be done.
HiTEch
-
Does the game feel better with it?
-
Does the game feel better with it?
In my experience... flying 4 different headsets with AH (Emagin Z800, Vuzix 1200VR, Oculus Dk1, Oculus Dk2):
- you lose the high resolution of a desktop screen.
- but the way you look around changes, especially with the accurate head tracking. So it offsets the res loss
- The ability to move your head around really enhances the immersion in the game, plus gives you a huge advantage in SA. You also begin to appreciate little things like cockpit size after a while
- 3D is awesome. The 3D cockpit will wow you. 3D combat is intense. You will notice it at lower altitudes or in slower fights. You can judge distance, relative movement and position much better. Taking snapshots as a plane crosses under your nose becomes a lot easier.
- landing becomes much easier, especially on carriers
- you start to appreciate the dimensions of the aircraft more (like in the IL-16 you feel like you can reach out and touch your tail)
- in GVs hanging out the top to look around while screaming across the landscape is huge fun.
-
sounds awesome :banana:
-
Gramp,
Sometimes in AH2 the two bomber drones perform micro warps at the worst possible moment for an attacking fighter. One of three outcomes happens.
1. - You pull the trigger and the bomber drones suddenly warp away from your rounds.
2. - The drones suddenly warp into your flight path causing you to receive the loosing end of a collision message.
3. - Each time you get near the bomber box, the drones warp behind you.
Over the years it has been a considerable source of angst in our community. Long time players of AH2 know what Caldera's reminder is also.
Yep, I stand corrected and understand. :D