
Advertisement
All Activity
This stream autoupdates
 Past hour

Stateofart in realtime software rendering?
MJP replied to Dawoodoz's topic in Graphics and GPU Programming
Fair enough 🙂. Just thought I'd point some of those things out though since they could still potentially work on a CPU as well, since they're not relying on hardware rasterization (or at least not nearly as much). I would also take a look at some of the recent work in raycasting into voxel grids, and/or the cool things that people have been doing with directly rendering signed distance fields. I may not be understanding the issues here, but I don't think there's anything stopping you from from doing the same "1 shader thread per SIMD lane" style vectorization that's used on GPU's. ISPC supports this model natively, with the added bonus that it's explicit about scalar vs. vector operatations. 
I'm not sure how helpful any of this will be (if at all), but I'll offer a couple more things. I found this: http://softimage.wiki.softimage.com/xsidocs/transforms_RotatingObjects.htm I assume this is the documentation for the software you're using, although I could be wrong about that. On this page is a section titled Setting the Rotation Order. It says that in the 'kinematics property editor' you can set the rotation order for (presumably) Euler angles, e.g. XYZ, XZY, etc. If this is in fact the documentation for the software you're using, perhaps you could look in the kinematics property editor (if you haven't already) and report what Eulerangle order you're using, as that could be relevant information. Also, in the section titled Animation and Rotation, it mentions that you can use quaternion keys. I don't know what this means exactly in the context of this particular software, but you might double check and make sure you're right that you can't export orientations in quaternion form. (The reason I mention this is that quaternions might be easier than Euler angles to convert from Softimage to UE.)
 Today

Close Quarters Development: Realistic Combat AI Part I
Janooba commented on jacksaccountongamedev's blog entry in Close Quarters Devlog
What method do you use to determine the likely position of an enemy? Does it just try to calculate the nearest cover from the remembered position? 
One other thing, become very comfortable with Linear Algebra, I mean comfortable enough where you can explain the topics to a child. Gotta get that fundamental understanding where the language used is irrelevant.

Thanks for that. I'm kind of pleased with the summation of what is needed. I am spending a bit of time coding to better my skills and avoiding blueprints with Unreal and feeling it's not going to be worth the time I'm putting into it if the place I work doesn't use it. I'm working on some old school ideas and enjoying the heck out of doing that. Internships (not much pay) and relocating isn't a problem at the moment, but I see networking as the ultimate test for me. I like to work, but meeting people, getting my name out, making connections, getting the foot in the door is something that will be tough for me.

Here is some code that i wrote already. It moves the given 3 Euler angles into a matrix. #include "pch.h" #include <iostream> #include <string> #include "linalg.h" using namespace linalg::aliases; using namespace std; float x,y,z; //Pre void MatrixXZY(float3 angles, float3x3& matrix); void MatrixXYZ(float3 angles, float3x3& matrix); void MatrixYXZ(float3 angles, float3x3& matrix); void MatrixYZX(float3 angles, float3x3& matrix); void MatrixZYX(float3 angles, float3x3& matrix); void MatrixZXY(float3 angles, float3x3& matrix); void PrintMatrix(string name, float3 angles, float3x3& matrix); void MatrixDecomposeYXZ(float3x3& matrix, float3& angles); int main() { float3 AnglesIn = { 0, 0, 0 }; float3 AnglesOut; float3x3 Matrix; // Matrix [Spalte][Zeile] cout << "" << endl; cout << "Input" << endl; cout << AnglesIn[0] << " " << AnglesIn[1] << " " << AnglesIn[2] << " " << endl; cout << "" << endl << endl; MatrixXZY(AnglesIn, Matrix); PrintMatrix("XZY", AnglesIn, Matrix); MatrixXYZ(AnglesIn, Matrix); PrintMatrix("XYZ", AnglesIn, Matrix); MatrixYXZ(AnglesIn, Matrix); PrintMatrix("YXZ", AnglesIn, Matrix); MatrixDecomposeYXZ(Matrix, AnglesOut); cout << "" << endl; cout << AnglesOut.x << " " << AnglesOut.y << " " << AnglesOut.z << " " << endl; cout << "" << endl << endl; MatrixYZX(AnglesIn, Matrix); PrintMatrix("YZX", AnglesIn, Matrix); MatrixZYX(AnglesIn, Matrix); PrintMatrix("ZYX", AnglesIn, Matrix); MatrixZXY(AnglesIn, Matrix); PrintMatrix("ZXY", AnglesIn, Matrix); } void MatrixXZY(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosZ * cosY; // Spalte 1 matrix[0][1] = sinX * sinY + cosX * cosY * sinZ; matrix[0][2] = cosY * sinX * sinZ  cosX * sinY; matrix[1][0] = sinZ; // Spalte 2 matrix[1][1] = cosX * cosZ; matrix[1][2] = cosZ * sinX; matrix[2][0] = cosZ * sinY; // Spalte 3 matrix[2][1] = cosX * sinZ * sinY  cosY * sinX; matrix[2][2] = cosX * cosY + sinX * sinZ * sinY; } void MatrixXYZ(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosY * cosZ; // Spalte 1 matrix[0][1] = cosX * sinZ + cosZ * sinX * sinY; matrix[0][2] = sinX * sinZ  cosX * cosZ * sinY; matrix[1][0] = cosY * sinZ; // Spalte 2 matrix[1][1] = cosX * cosZ  sinX * sinY * sinZ; matrix[1][2] = cosZ * sinX + cosX * sinY * sinZ; matrix[2][0] = sinY; // Spalte 3 matrix[2][1] = cosY * sinX; matrix[2][2] = cosX * cosY; } void MatrixYXZ(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosY * cosZ + sinY * sinX * sinZ; // Spalte 1 matrix[0][1] = cosX * sinZ; matrix[0][2] = cosY * sinX * sinZ  cosZ * sinY; matrix[1][0] = cosZ * sinY * sinX  cosY * sinZ; // Spalte 2 matrix[1][1] = cosX * cosZ; matrix[1][2] = cosY * cosZ * sinX + sinY * sinZ; matrix[2][0] = cosX * sinY; // Spalte 3 matrix[2][1] = sinX; matrix[2][2] = cosY * cosX; } void MatrixYZX(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosY * cosZ; // Spalte 1 matrix[0][1] = sinZ; matrix[0][2] = cosZ * sinY; matrix[1][0] = sinY * sinX  cosY * cosX * sinZ; // Spalte 2 matrix[1][1] = cosZ * cosX; matrix[1][2] = cosY * sinX + cosX * sinY * sinZ; matrix[2][0] = cosX * sinY + cosY * sinZ * sinX; // Spalte 3 matrix[2][1] = cosZ * sinX; matrix[2][2] = cosY * cosX  sinY * sinZ * sinX; } void MatrixZYX(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosZ * cosY; // Spalte 1 matrix[0][1] = cosY * sinZ; matrix[0][2] = sinY; matrix[1][0] = cosZ * sinY * sinX  cosX * sinZ; // Spalte 2 matrix[1][1] = cosZ * cosX + sinZ * sinY * sinX; matrix[1][2] = cosY * sinX; matrix[2][0] = sinZ * sinX + cosZ * cosX * sinY; // Spalte 3 matrix[2][1] = cosX * sinZ * sinY  cosZ * sinX; matrix[2][2] = cosY * cosX; } void MatrixZXY(float3 angles, float3x3& matrix) { float cosX = cosf(angles.x); // X float sinX = sinf(angles.x); float cosY = cosf(angles.y); // Y float sinY = sinf(angles.y); float cosZ = cosf(angles.z); // Z float sinZ = sinf(angles.z); matrix[0][0] = cosZ * cosY  sinZ * sinX * sinY; // Spalte 1 matrix[0][1] = cosY * sinZ + cosZ * sinX * sinY; matrix[0][2] = cosX * sinY; matrix[1][0] = cosX * sinZ; // Spalte 2 matrix[1][1] = cosZ * cosX; matrix[1][2] = sinX; matrix[2][0] = cosZ * sinY + cosY * sinZ * sinX; // Spalte 3 matrix[2][1] = sinZ * sinY  cosZ * cosY * sinX; matrix[2][2] = cosX * cosY; } void PrintMatrix(string name, float3 angles, float3x3& matrix) { cout << "" << endl; cout << name << "Matrix" << endl; cout << "" << endl; cout << matrix[0][0] << " " << matrix[1][0] << " " << matrix[2][0] << " " << endl; cout << matrix[0][1] << " " << matrix[1][1] << " " << matrix[2][1] << " " << endl; cout << matrix[0][2] << " " << matrix[1][2] << " " << matrix[2][2] << " " << endl; cout << "" << endl << endl << endl; } void MatrixDecomposeYXZ(float3x3& matrix, float3& angles) { angles.x = asinf(matrix[2][1]); // X if (cosf(angles.x) > 0.0001) // Not at poles X { angles.y = atan2f(matrix[2][0], matrix[2][2]); // Y angles.z = atan2f(matrix[0][1], matrix[1][1]); // Z } else { angles.y = 0.0f; // Y angles.z = atan2f(matrix[1][0], matrix[0][0]); // Z } } Okay. Thank you. Unfortunatly i will have to go with Euler angles. @JohnnyCode mentioned affine transformations and alignment transformations. I will look into that. I guess i have to really learn this stuff to succeed here.

I understand that modeling programs and other types of editors generally use Euler angles. I just mentioned export options because it seems possible that some modeling programs might offer alternatives (such as quaternions) for export purposes.

Many times after the development of a game, at ACE we produce short videos to show early implementations of the titles we launch. For those interested in game development, here is a brief video showing some early concepts for SolSeraph.  Follow ACE Team: ACE Team website Steam group Discord Reddit Twitter Facebook "ACE Team fans" Facebook page YouTube Twitch Player me Tumblr Instagram Minds Gab ВКонтакте

Follow me on the journey of creating an MMORPG. Along the way, I will share my experiences, implementation choices, techniques, decisions, tips and tricks, until the release.

Hi fellow devs. I am doing a video devlog of my journey doing an MMORPG, and along the way, I am sharing my progress, tips, tricks and techniques. I will also be posting tutorials on some aspects of the development, like from example clientserver networking, leveraging scripting, creating tools, and a lot more. If you like these topics, make sure to take a look at my channel and subscribe, and I will see you in the next video. https://www.youtube.com/channel/UCyOt8sPTqNxRseUzpzUEQQg

Thanks for your answer. How would such calculations/transformations look like? Iam 100% new to this topic and i dont have a clue what to do. If someone could just point me into the right direction i could find out myself maybe. Euler Angles > Matrix > Matrix Operations? > Back to Euler

3Dapp EulerRotations to UE4 EulerRotations
JohnnyCode replied to C3D_'s topic in Math and Physics
You will need alignment transformation, not sure that fitting UE4 will be an affine transformation though if handedness will not sit in tact after you rotate Y to Z. You may need inverse scale by handedness axis then, applied as last in the transformation. 
Janooba joined the community

I need my projector to project the WHOLE Starcraft map at once...
conq replied to StarcraftRoboticsGuy's topic in GDNet Lounge
This isn't too hard in the remake, and can be done with the editor. But lod comes into play and things stop rendering that far zoomed out... Just play supreme Commander instead, i guess. 
Graphics To pixelate, or not to pixelate. That is the question.
theaaronstory posted a blog entry in EOTH
Up until recently, I was convinced that using pixel art was the most suitable for this project. Aside from it giving you a unique feel, it also has qualities that a more modern render just cannot compete with: It has that special magic to it, which is really hard to beat. Furthermore, I would avert from using super cartoonish, stylized characters, as they would simply not fit the theme. Or use super grungy art for that matter. [We've seen way too many of them so far.] But I wouldn't want to fall into the trap of becoming just another generic, isometric game on the market. That is why I made this small mockup, to see the difference and help me decide on which to choose fromsort of. For some reason, I get this notion that I should change my mind, and go with a super modern (high detail) look, and not worry about it too much. Instead, the characters, the scenes, animation and all the other assets should be carefully curated, and only worry about that it stays visually attractive, unique and stays within the limits of the said vision. [Using deeper color palettes, and darker scenes.] 
A classic ARPG concept, built upon the legacy of the goodold Diablo 2. Hopefully, one day it will see the daylight!

how unit testing should be used on unknown scenarios and results?
Alberth replied to moeen k's topic in General and Gameplay Programming
Many people are grabbed by TDD due to its apparent simplicity, and quick feedback. However, it's mostly a false impression in my opinion, it's already impossible to fully test a single 64 bit addition, let alone if you actually do something in the code. You may want to read https://rbcsus.com/documents/WhyMostUnitTestingisWaste.pdf As for your question, how are you going to code anything with "unknown condition and states"? I think that's impossible. As such, you may be looking at the wrong point for testing, shouldn't you test where you at least know what it is supposed to do? 1 reply

1

The trouble with integration methods for predicting the path of an object is that eventually errors increase to the point where no faith can be had in the results. In 1987 Bretagnon and Francou, of the Bureau des Longitudes in Paris took a different approach and produced a method called VSOP87 which enables the heliocentric coordinates of all the major planets to be calculated from long series of terms. As I understand it they did harmonic analysis of historically long series of observations, effectively producing something akin to Fourier series for the calculations. Jean Meeus' book "Astronomical Algorithms" explains much more about this, giving the algorithm and discussing accuracy. He includes all the necessary data as an appendix to the book. See https://www.willbell.com/math/mc1.htm I obtained the book in 2010 and implemented the algorithm for all major planets for a certain web site. I originally wrote it in Java for clientside applets but when Oracle ceased to keep Java secure enough in browsers, I converted it all to serverside PHP (yuk!). The original paper is referenced in Jean's book: P.Bretagnon, G.Francou, "Planetary theories in rectangular and spherical variables. VSOP87 solutions", Astronomy and Astrophysics, Vol. 202, pp 309315 (1988). Searching today I discovered that Jean's book is available online as a PDF (488 pages) from http://www.agopax.it/Libri_astronomia/pdf/Astronomical Algorithms.pdf Thanks for pointing me to MathPages.com  that looks excellent.

I would like to pay a coder to write the 3D Terrain Engine of Koronis Rift
ThorMalleuson replied to Dr. David Bowman's topic in Hobby Project Classifieds
Just the terrain rendering? Do you need a virtual camera and movement? Do you have a data format in mind? How much are you willing to pay? 
ThorMalleuson joined the community

An Artist Trying to Program
Shaarigan commented on Cody.Rauh's blog entry in From Pixels to Programming
I'm a little bit more selfish and do what I do because I like it to do and I always can't wait to see/play the result as my best customer and strictest reviewer 
Would you buy a book on Clifford Algebra?
JTippetts replied to jkabrg's topic in Games Career Development
Selfpublishing is great as a side hustle, but if you quit your job to try to make a living from it you are going to starve. Especially with such a niche product. Do some basic math involving your yearly expenses vs the overhead of producing your product and balanced by expected income. Expect sales to number in the hundreds because the actual market for such a thing is vanishingly low. Do the same for future releases, because you absolutely can not expect to coast off the proceeds of a single product forever. I once read a blog post by an independent author who estimated that if he can build a core group of 5000 fans, who dedicatedly buy everything he produces on a twoyear basis, he could almost match what he gave up by quitting his job. You should try to do the same kind of calculation. Be very pessimistic in your estimation of market size. 
An Artist Trying to Program
Cody.Rauh commented on Cody.Rauh's blog entry in From Pixels to Programming
Honestly, I couldn't even give you the definition of the first three things you listed without having to go google it, and I was always terrible at math. That said, I am a big believer in doing what you can with what you have at the moment, and building your capability each day by learning all the above you mentioned, and more importantly learning to love the process by seeing the value in each component required to do the activity as a whole. Its a process, or is it a method, maybe a function? ( joking ) I agree with you on so many points! I spent the last 13+ years getting better at art, and depending on who you ask on what day someone would say 13 years? This guy sucks. Which while not the most actionable feedback has a truth to it that we all have room to improve every day. I imagine even programming every day as I have been if done for 13 years would likely yield a similar result. Art like coding has its own snobbery, I think this is true of anything, and it is made worse by 95% of people in the world looking at someone and saying I can do that! While they have the potential they often don't realize all the work that goes into it. The only problem I ever have is being grouped in that category, something honestly I have had to get over, cause 99.99% of people don't know you, and it isn't personal it is just what people are used to dealing with. I do wish people would ask vs. assume, but you can want in one hand and ______ in the other and see which fills up faster. Another thing is most are in it to get rich, and many of us with experience know it would be easier to buy a lottery ticket and win than make a "successful game", plus you wouldn't have to invest 5, 10, or even 20 years of your life. I myself am aiming for social impact and culture change instead of money, and that may be an even harder fought goal. Never claimed to be sane, lol. 
What feelings does this soundtrack make you?
Evgeny Ryabovol replied to Evgeny Ryabovol's topic in Music and Sound FX
Hi guys, it's just amazing! I did not expect such a strong and varied reactions. It even seemed to me that some of you are just experienced screenwriters! This is just great! It seems to me that with just a short soundtrack, it is enough to create a plot for a small film or a game episode. All of you guys are awesome! A little reflection on each of the answers, we can say that you all described something similar. It's like the core of an emotional lump described from different angles and it's incredible. Thank you so much to all of you guys! I'm very pleased that you enjoyed my work. Looking forward to a new visions All the best wishes, Evgeny 
Hello, I want to make a game where i can procedurally generate caves. I found out that the best way to create this caves for me is by algorithm Perlin Worms, but I'm having problems with understanding it. Could someone explain how it works or write some code examples (best in SFML). Thanks

Stateofart in realtime software rendering?
Krypt0n replied to Dawoodoz's topic in Graphics and GPU Programming
Maybe that paper will help you to more easily write CPU shaders that compile to SIMD: https://software.intel.com/enus/articles/easysimdthroughwrappers 
Stateofart in realtime software rendering?
Dawoodoz replied to Dawoodoz's topic in Graphics and GPU Programming
The main drawback is that all shaders must be handcoded using SIMD vectorization, preferrably as separate fullscreen passes. However, the engine comes with a hardware abstraction layer for SIMD and tries to stay within the SSENEON intersection. This is why LLVM OpenGL implementations cannot be optimal on the CPU, because vectorizing is difficult for compilers when only some shaders can be efficiently vectorized.

Advertisement

Advertisement

Popular Now

Project Updates
 Online RPG Ricardo Valério Role Playing
 EOTH theaaronstory Adventure

Popular Contributors

Member Statistics

Advertisement