Edit - May as well make use of the glitched double post.
Made a wireframe tutorial with mental ray - been using this a while so thought I'd share with anyone who hasn't yet discovered the material override thing in 3dsmax.
isometric camera projection engine for a web game:
I had 2 days for this proof of concept thing: kind of my way to convince other members of the team to go for a certain engine direction without them understanding anything at all before. It was the same with Magnum Force 10 for which I took a few days as well just to create a proof of concept to convince the rest of the team to go with that technology. And its something I really enjoy doing at work.
This idea is a bit related to stuff I did for curing colors as well.
I basically have 2 representations of the level similar to normal mapped 3d models these days. One is the high poly and beauty shot render version, the other a super low poly model with only the faces you can go behind, under and see.
The low poly model is used to calculate in 3d space the depth towards the view and with that mask out parts of the interactive and moving objects that are covered.
The game (will reveal more as soon as the team starts on it) will have static isometric views but moving characters. The characters will probably be rendered in 3d as well but in 4 directions and with a set of animations.
Maybe the background will have some loop animations later like some waterfall for example, rotating vans or other stuff that could be nicely embedded in the background rendering - it could even overlap a simplified 3d low poly face with a transparent animation adding some impressive effects not seen in many other isometric games before.
edit:
Although already posted and news from last week but I have been working a bit again on TexTools:
I have been prototyping a simple space RTS game off and on recently: Unity Web Player
Its inspired by Homeworld, but I want it to be much simpler. The focus is on unit buildup for defence VS unit attack orders and very simple resource management. The user only directly controls the Mothership and gives generic attack/defend orders to x percentage of their units.
I have been prototyping a simple space RTS game off and on recently: Unity Web Player
Its inspired by Homeworld, but I want it to be much simpler. The focus is on unit buildup for defence VS unit attack orders and very simple resource management. The user only directly controls the Mothership and gives generic attack/defend orders to x percentage of their units.
worked on a UVW to spline converter script that supports 2 modes:
In one of the modes it only generates splines for the outline of the UV shells which I find convenient if I block out the vector in Flash using the paint bucket per shell. I am still playing with a few ideas on how to use this data in other tools besides Photoshop (import as paths for example).
Possible tools could be: Illustrator, Flash but maybe even some mix stuff in 3dsMax as well like using the UV as a base to create a cloth simulation using the garmet maker. Possibilities will certainly increase with this option.
RumbleSushi: A web game for a big US company, I am a the developer for this game. The project starts in 3 weeks but I prototyped in advance to convince the directors on the project to go with tech solution instead of a tile based iso engine. My main reason for this was to have more unique graphics (no tile patterns, long casting gradients / shadows, free choice in style and execution).
EricChadwickYes I am aware of that plugin (really nice one) but I want to create a workaround because I want to avoid additional plugin installations so that I can bundle it with TexTools.
There is always the options to install that one in addition to TexTools and other tools. Oh and mine can be useful for experimental stuff inside max or other tools. Currently I have a project that uses vector graphics as a texture source so this comes in handy for me atm.
Started working on a UV canvas resize script:
Similar to the stuff in Photoshop it lets you extend the UV canvas so you can easily extend or decrease back a Texture size.
A few months ago I started building myself a 3D engine from scratch, geared 100% towards making games.
Well - the engine is almost complete, and this thread would be a good place to post some demos.
I joined polycount to learn more about the level design and modelling side of game development by the way.
My engine has been built for speed from the ground up, I've worked tirelessly getting things running as quick as possible. Not just rendering speed, but also very fast culling routines and deferred rendering/processing, per model and per polygon - not only so I can have a lot of enemies on screen, but so I can have big levels.
Not only culling, but very fast per model transformations and movement. In a proper low poly environment like this, I find it more impressive to have a lot of very low poly objects, rather than just a few slightly less low poly objects. I love games that have hordes of enemies etc.
I'm pretty sure it's the fastest Flash 3D engine around actually.
http://rumblesushi.com/snowscape.html - this demo has some basic per polygon collision detection, some low poly terrain generated from a heightmap, 1000 trees, and 12 ice boulders. Use W or the up key to accelerate, and the mouse to steer.
Here are 2 demos showing a lot of objects on screen at once, with basic collisions and physics.
Here's some older stuff, running on my F9 build that is not as quick overall, but does a good job of showing the fast handling of multiple moving objects.
http://rumblesushi.com/city_F10.html - This demo has 150 basic buildings, plus 500 moving flowers, and mip mapping (I had to use mip mapping to get rid of the nasty moire effect from the striped textures). WASD or arrows keys to move, mouse to look. Press V to enable vertical look.
I talked mainly of the speed in the above paragraphs, because that's what I've worked on most, every day, for a few months. But I've also put a lot of effort into cameras - I think that's a very important part of 3D games. I've got a first person cam, and also a slick tracking cam and replay style cam that you can see in the flock demos.
Now the engine is nearly complete, I'm taking a bit of a break from programming at the moment, and focusing on learning modelling and level design.
But engine wise there's only 2 major things that need doing before starting work on my first game. First, I need to develop the collision detection, to collide with multiple polys simultaneously with a fast broadphase, and also, to import animation. The first one is up my street, and should be fun, the second one not so much. My fort
Is that project freelance or for the company you work for?
I don't blame you for using 3D framework even if it's isometric though, I hate isometric 2D
I don't blame you for using papervision either
Its filed under R & D for my company for a project that is about to start later. Its part of the concept phase before we hit with a more detailed concept to the client and I don't freelance.
Hey keen, just wanted to let you know that in its current state the game is not really compatible with macbooks touchpads. I understand that it is a small part of the target but anyways here goes : the zoom kinda works, but it goes crazy very fast and eventually ends up reloading the page (conflict between what the game expect, and the gesture based browsing in opera)
The cool thing is, if you do manage to make it work for touchpad based navigation, it means itll also work perfectly on all those new tablet/touch devices appearing these days.
Its filed under R & D for my company for a project that is about to start later. Its part of the concept phase before we hit with a more detailed concept to the client and I don't freelance.
Good, you'll be more excited when I start making proper games, running at 60 fps
Also, I obviously can't compete with Unity graphics wise - to put it simply, Unity uses the GPU, my engine is 100% software. But the great thing about choosing to do this in Flash is of course the userbase, and the fact that a proper 3D game in Flash is a big deal.
Keen - out of curiosity - what's the rendered poly count per frame on your demo, roughly?
I created a pretty hacky event driven mission scripting system. Heres the mission code used for this demo:
MEC.BeginAutoAdd();
//Main Thread
MEC.CurrentThread("GettingStarted");
MEC.ShowDialog("WelcomeDialog1", "Oh hi there, welcome to Null Space. Lets start with a basic overview of the Null Space world...");
MEC.ShowDialog("WelcomeDialog2", "Null Space is filled with lots of mean unpleasant, and downright ornery lifeforms... You must be prepared to deal with them when the time comes...");
MEC.ShowDialog("WelcomeDialog3", "Lets get friendly with your ships controls...");
MEC.ShowDialog("WelcomeDialog4", "Left Click and hold somewhere in the world to move your Carrier ship... Remember you can move your Carrier ship up and down too...");
MEC.OnTriggerExit("MoveTriggerTest", "[[MOTHERSHIP]]", "StartTrigger");
MEC.ShowDialog("WelcomeDialog5", "Hmm... Hmm... Pretty good! To rotate your camera around your ship hold Middle Mouse button and drag the mouse... You can also zoom in and out with the Mouse Wheel...");
MEC.ShowDialog("WelcomeDialog6", "Move over to that group of asteroids... They contain shiny green crystals which you can use to build more ships...");
MEC.OnTriggerEnter("MoveToAsteroids", "[[MOTHERSHIP]]", "AsteroidGroup1");
MEC.ShowDialog("WelcomeDialog7", "Coolbeans! Right now you cant collect these pretty chrystals because I havent implemented it yet... But thats ok because you have infinate resources to build ships :)");
MEC.ShowDialog("WelcomeDialog8", "Collecting resources is not the only way to make big bucks though... Infact destroying enemys will give you cash too!");
MEC.BroadcastMessage("SpawnSet1", "EnemySpawner1", "Spawn", 0);
MEC.WaitForTimer("SpawnDelay1", 0.25);
MEC.BroadcastMessage("SpawnSet2", "EnemySpawner2", "Spawn", 0);
MEC.WaitForTimer("EnemyMessageDelay1", 1.0);
MEC.ShowDialog("WelcomeDialog9", "Oh no! Looks like some blue ships saw you getting too close to their asteroids... This is a good opportunity to tell you how to build stuff...");
MEC.ShowDialog("WelcomeDialog10", "Notice the buttons on the upper right of the screen. Click them to start building some ships. Build some fighters and go take care of those blue guys.");
MEC.OnDestroy("WaitForEnemysToBeKilled", "IncomingShip");
MEC.WaitForTimer("EnemysDestroyedDelay", 1.5);
MEC.ShowDialog("WelcomeDialog11", "Good Job!! Right now you only have access to 1 of the fighter class ships, but when you progress through Null Space you will gain access to much bigger and better ships. Thats the end of this test tutorial demo :)");
//Crazy Spawn Thread
MEC.CurrentThread("CrazySpawnThread");
MEC.WaitForEvent("CrazySpawnWait1", "WelcomeDialog11");
MEC.WaitForTimer("CrazySpawnInitialDelay", 2.0);
MEC.BroadcastMessage("CrazySpawn1", "EnemySpawner2", "Spawn", 0);
MEC.WaitForTimer("CrazySpawnDelay1", 3.0);
MEC.ReturnToEvent("ReturnLoop1", "CrazySpawn1");
MEC.EndAutoAdd();
I just got a signoff from my former employer to post this. Technical Artist Guidelines It lists what we expected from our Technical Artists, what TAs did for the studio at large, etc. There's also a bunch of links at the end for more info on the subject.
Hey Eric, I was just talking about this: wonder what you (or others here) think about it; how rare are good TA's? Are they hard to come by? Seem to be quite a few on Polycount here, but you can't really go by that.
I think these days they're a bit more rare than in the other disciplines... good artists, good programmers, etc.
Takes a particular mindset to make a good one, a mix of the visual and the technical. Tech Artists still have to be practicing artists, not just coders with a creative bent, so they can design tools that artists can use. But they also have to enjoy coding, they can't be just artists using off-the-shelf tools.
Some TAs are being hired from the job pool, but I think most TAs are still developed internally. That's just a hunch though.
Hey Eric, that's the job I'd really like and feel I'm cut out for, but one of my major issue is I don't know how to make it acknowledged: I mean, in big studios like Blue Fang Games, it seems to be a well defined professional position, but I'm afraid, with my current knowledge, to look neither a good artist (I've got a few good but not superstar assets) nor a good programmer (I haven't coded UnrealEngine 4 yet), because it seems a high degree of specialization pays off these days. How do you sell TA skills without looking like a "not over the top" person at art and code? As an example, I applied for a job near home and never got a reply, while they seem to be in real need of people by all levels. Right now I'm in a deep review of C++, but that cuts away every effort in the "artistic department", and vice versa when I decide to make some new asset. How to deal with this job-wise?
Well that doc has a fair bit of idealism in it, what we aspired to.
I for example am not fluent in any scripting language, I just pitter-patter here and there. So my role as Lead TA was mostly a managerial one, helping the two TAs manage their efforts and helping them communicate better with the rest of the studio, all the while creating and fixing art assets.
Anyhow, in the last year Blue Fang laid off the entire console/PC game dev team. Now they only do Facebook-style social games. No 3D TAs there anymore.
I'd advise just keeping at it. Focus on the core TA skills: rigging and scripted tools. Showing a visual arts aptitude is a plus, but nowhere near as important as scripting/rigging ability.
In general though the TA role is not well defined. Most commonly it's a firefighter role, the Fixer.
keen i advise more stylised geometric particle effects to support the awesome feel of the prototypes
and i think im ready to post in this thread now
I know there are probably 50 scripts which do this already, but i'm learning and i'm happy with the progress i'm making
drag 2 line to create a shape, after that you can tweak the white and orange boxes. Del key to remove the current shape, backspace to remove all shapes.
renderhjs> Nice, looks sweet.
I don't really get how the first example with the rounded corner on the lattice is useful? Seems like some undesired stretching. Whats the idea there? Having bendy options like that is probably useful for rounded/spherical shapes you want to sample of, but that surface seems quite flat to me.
it uses a volume slicing technique which is desribed here at t the bottom of the page. I have an idea for a seemingly better method without rendering many overlapping planes.
Fixing up a working script for TexTools that lets you relax existing UV's with ABF and or LSCM by using the free RoadKill as a hook in Max. http://boards.polycount.net/showthread.php?t=71230 and http://boards.polycount.net/showthread.php?t=72045
I just need to solve the merge imported OBJ UV's somehow on the stack of the selected object - but that should be done by today or tomorrow.
So its just selecting a object that has already UV's, run the script and it unwraps and relaxes the UV's based on the open edges in the UV. That way no additional seam marking or wrapper is needed.
I was invited at DrD studios here in Sydney (about 200 people doing FX and char animation) talking about rapid game development at soap. I wrapped up some demonstrations of current stuff I work on to show, maybe I can show the one or other piece online as well.
Neox: I found a few places in holland where you can get it, are there any export-shops around there?
Actually, thanks to the multi-cultural area I live in our local supermarket even has it, woo. Not cheap, but totally worth it.
*waves hand* also a bundaberg fan, from the nice sandwich place down the road..
@ keen: fantastic stuff so far man . When you build up your ai, i would maybe add some stuff to gauge the threat to your ship, as i noticed every fighter went after a couple blue on one side while my ship was approaching a whole bunch of blues, and i really would have chosen 90% of my ships to get over there and protect me but they stayed back fighting the 2
The idea is to generate voxel data (for a flash engine) based on 3d mesh/poly geometry with per voxel texture colors.
One script creates a volume of voxels, the other one uses the render mechanic in max to read out the g-Buffer of a rendering and extracting the zDepth values and uvPosition values.
Maybe I will end up mixing the 2 techniques to get a full 360 deg. voxel object. A guy at maltaanon.com has a nice working script though not released so far:
I have also been looking at vector to voxel conversion. I have an idea for one method which would only work correctly with a closed or almost closed mesh, unless you dont care about filling out the inside of the volume.
The idea is to do a raycast in the -z and +z direction for each x and y voxel row between the mesh bounds. The raycasts would gather every point they hit and then sort them by distance to the -z start position. From those 2 sets of sorted points you could figure out the volumetric row.
Replies
Edit - May as well make use of the glitched double post.
Made a wireframe tutorial with mental ray - been using this a while so thought I'd share with anyone who hasn't yet discovered the material override thing in 3dsmax.
[ Link ]
I had 2 days for this proof of concept thing: kind of my way to convince other members of the team to go for a certain engine direction without them understanding anything at all before. It was the same with Magnum Force 10 for which I took a few days as well just to create a proof of concept to convince the rest of the team to go with that technology. And its something I really enjoy doing at work.
This idea is a bit related to stuff I did for curing colors as well.
anyway check out the demo (click anywhere to switch to the debug mode)
online demo:
http://renderhjs.net/bbs/polycount/iso_project_engine/
I basically have 2 representations of the level similar to normal mapped 3d models these days. One is the high poly and beauty shot render version, the other a super low poly model with only the faces you can go behind, under and see.
The low poly model is used to calculate in 3d space the depth towards the view and with that mask out parts of the interactive and moving objects that are covered.
The game (will reveal more as soon as the team starts on it) will have static isometric views but moving characters. The characters will probably be rendered in 3d as well but in 4 directions and with a set of animations.
Maybe the background will have some loop animations later like some waterfall for example, rotating vans or other stuff that could be nicely embedded in the background rendering - it could even overlap a simplified 3d low poly face with a transparent animation adding some impressive effects not seen in many other isometric games before.
edit:
Although already posted and news from last week but I have been working a bit again on TexTools:
Namely re organizing the interface and adding context menus, link to the post:
http://boards.polycount.net/showpost.php?p=1092697&postcount=83
A maxscript generates in a dirty way right now some source files that are getting compiled within the swf file of the engine.
agree...
Unity Web Player
Its inspired by Homeworld, but I want it to be much simpler. The focus is on unit buildup for defence VS unit attack orders and very simple resource management. The user only directly controls the Mothership and gives generic attack/defend orders to x percentage of their units.
fuck yeah ramming attack
In one of the modes it only generates splines for the outline of the UV shells which I find convenient if I block out the vector in Flash using the paint bucket per shell. I am still playing with a few ideas on how to use this data in other tools besides Photoshop (import as paths for example).
Possible tools could be: Illustrator, Flash but maybe even some mix stuff in 3dsMax as well like using the UV as a base to create a cloth simulation using the garmet maker. Possibilities will certainly increase with this option.
EricChadwickYes I am aware of that plugin (really nice one) but I want to create a workaround because I want to avoid additional plugin installations so that I can bundle it with TexTools.
There is always the options to install that one in addition to TexTools and other tools. Oh and mine can be useful for experimental stuff inside max or other tools. Currently I have a project that uses vector graphics as a texture source so this comes in handy for me atm.
Started working on a UV canvas resize script:
Similar to the stuff in Photoshop it lets you extend the UV canvas so you can easily extend or decrease back a Texture size.
I don't blame you for using 3D framework even if it's isometric though, I hate isometric 2D
The style of the game, it's hard to decipher what genre the game is going to be, is it action or puzzle or adventure?
I'm surprised this thread isn't bigger already, this forum is techier than I thought it would be.
I'll post my 3D engine here in a bit.
Well - the engine is almost complete, and this thread would be a good place to post some demos.
I joined polycount to learn more about the level design and modelling side of game development by the way.
My engine has been built for speed from the ground up, I've worked tirelessly getting things running as quick as possible. Not just rendering speed, but also very fast culling routines and deferred rendering/processing, per model and per polygon - not only so I can have a lot of enemies on screen, but so I can have big levels.
Not only culling, but very fast per model transformations and movement. In a proper low poly environment like this, I find it more impressive to have a lot of very low poly objects, rather than just a few slightly less low poly objects. I love games that have hordes of enemies etc.
I'm pretty sure it's the fastest Flash 3D engine around actually.
http://rumblesushi.com/snowscape.html - this demo has some basic per polygon collision detection, some low poly terrain generated from a heightmap, 1000 trees, and 12 ice boulders. Use W or the up key to accelerate, and the mouse to steer.
Here are 2 demos showing a lot of objects on screen at once, with basic collisions and physics.
http://rumblesushi.com/katamari_baldwin.html
http://rumblesushi.com/hachi_roku.html
Here's some older stuff, running on my F9 build that is not as quick overall, but does a good job of showing the fast handling of multiple moving objects.
http://rumblesushi.com/city_F10.html - This demo has 150 basic buildings, plus 500 moving flowers, and mip mapping (I had to use mip mapping to get rid of the nasty moire effect from the striped textures). WASD or arrows keys to move, mouse to look. Press V to enable vertical look.
These next demos show my super quick flock code -
http://rumblesushi.com/sea.html - An underwater scene.
http://rumblesushi.com/flock_01.html - some undulating flowers. Press C to switch to a rollercoaster cam.
http://rumblesushi.com/flock_02.html - 360 six polygon spaceships, flocking.
I talked mainly of the speed in the above paragraphs, because that's what I've worked on most, every day, for a few months. But I've also put a lot of effort into cameras - I think that's a very important part of 3D games. I've got a first person cam, and also a slick tracking cam and replay style cam that you can see in the flock demos.
Now the engine is nearly complete, I'm taking a bit of a break from programming at the moment, and focusing on learning modelling and level design.
But engine wise there's only 2 major things that need doing before starting work on my first game. First, I need to develop the collision detection, to collide with multiple polys simultaneously with a fast broadphase, and also, to import animation. The first one is up my street, and should be fun, the second one not so much. My fort
Its filed under R & D for my company for a project that is about to start later. Its part of the concept phase before we hit with a more detailed concept to the client and I don't freelance.
Unity Web Player
The cool thing is, if you do manage to make it work for touchpad based navigation, it means itll also work perfectly on all those new tablet/touch devices appearing these days.
Hope this helps!!
I take it you mean for not using Papervision
Good, you'll be more excited when I start making proper games, running at 60 fps
Also, I obviously can't compete with Unity graphics wise - to put it simply, Unity uses the GPU, my engine is 100% software. But the great thing about choosing to do this in Flash is of course the userbase, and the fact that a proper 3D game in Flash is a big deal.
Keen - out of curiosity - what's the rendered poly count per frame on your demo, roughly?
Are you sure? After ramming all three enemy motherships at full speed, mine blew up!
By the way, it is really interesting, I'm eager to see how it develops.
I'm totally loving this, even as is - it's great fun :thumbup:
Really nice work, keen!
Unity WebPlayer
I created a pretty hacky event driven mission scripting system. Heres the mission code used for this demo:
I just got a signoff from my former employer to post this.
Technical Artist Guidelines
It lists what we expected from our Technical Artists, what TAs did for the studio at large, etc. There's also a bunch of links at the end for more info on the subject.
Takes a particular mindset to make a good one, a mix of the visual and the technical. Tech Artists still have to be practicing artists, not just coders with a creative bent, so they can design tools that artists can use. But they also have to enjoy coding, they can't be just artists using off-the-shelf tools.
Some TAs are being hired from the job pool, but I think most TAs are still developed internally. That's just a hunch though.
I for example am not fluent in any scripting language, I just pitter-patter here and there. So my role as Lead TA was mostly a managerial one, helping the two TAs manage their efforts and helping them communicate better with the rest of the studio, all the while creating and fixing art assets.
Anyhow, in the last year Blue Fang laid off the entire console/PC game dev team. Now they only do Facebook-style social games. No 3D TAs there anymore.
I'd advise just keeping at it. Focus on the core TA skills: rigging and scripted tools. Showing a visual arts aptitude is a plus, but nowhere near as important as scripting/rigging ability.
In general though the TA role is not well defined. Most commonly it's a firefighter role, the Fixer.
and i think im ready to post in this thread now
I know there are probably 50 scripts which do this already, but i'm learning and i'm happy with the progress i'm making
[ame]http://www.youtube.com/watch?v=QjnBOpmzRoE[/ame]
Texture Ripping tool
Online demo (without clipboard support)
http://renderhjs.net/bbs/polycount/textureRipper/dmo1/demo.swf
drag 2 line to create a shape, after that you can tweak the white and orange boxes. Del key to remove the current shape, backspace to remove all shapes.
thread:
http://boards.polycount.net/showthread.php?t=54694
I don't really get how the first example with the rounded corner on the lattice is useful? Seems like some undesired stretching. Whats the idea there? Having bendy options like that is probably useful for rounded/spherical shapes you want to sample of, but that surface seems quite flat to me.
http://www.keenleveldesign.com/pimp/voxelrenderer/VoxelRenderer_Wip_02.html
EDIT: fixed now:
http://www.keenleveldesign.com/pimp/voxelrenderer/VoxelRenderer_Wip_02.html
it uses a volume slicing technique which is desribed here at t the bottom of the page. I have an idea for a seemingly better method without rendering many overlapping planes.
updated and released TexRipper a adobe AIR (mac, win, linux support) app that rips textures out of anything within your clipboard.
release post:
http://boards.polycount.net/showthread.php?t=54694&page=3#52
Fixing up a working script for TexTools that lets you relax existing UV's with ABF and or LSCM by using the free RoadKill as a hook in Max.
http://boards.polycount.net/showthread.php?t=71230 and http://boards.polycount.net/showthread.php?t=72045
I just need to solve the merge imported OBJ UV's somehow on the stack of the selected object - but that should be done by today or tomorrow.
So its just selecting a object that has already UV's, run the script and it unwraps and relaxes the UV's based on the open edges in the UV. That way no additional seam marking or wrapper is needed.
I was invited at DrD studios here in Sydney (about 200 people doing FX and char animation) talking about rapid game development at soap. I wrapped up some demonstrations of current stuff I work on to show, maybe I can show the one or other piece online as well.
i want some here
very cool stuff!
Actually, thanks to the multi-cultural area I live in our local supermarket even has it, woo. Not cheap, but totally worth it.
@ keen: fantastic stuff so far man . When you build up your ai, i would maybe add some stuff to gauge the threat to your ship, as i noticed every fighter went after a couple blue on one side while my ship was approaching a whole bunch of blues, and i really would have chosen 90% of my ships to get over there and protect me but they stayed back fighting the 2
The idea is to generate voxel data (for a flash engine) based on 3d mesh/poly geometry with per voxel texture colors.
One script creates a volume of voxels, the other one uses the render mechanic in max to read out the g-Buffer of a rendering and extracting the zDepth values and uvPosition values.
Maybe I will end up mixing the 2 techniques to get a full 360 deg. voxel object. A guy at maltaanon.com has a nice working script though not released so far:
The idea is to do a raycast in the -z and +z direction for each x and y voxel row between the mesh bounds. The raycasts would gather every point they hit and then sort them by distance to the -z start position. From those 2 sets of sorted points you could figure out the volumetric row.