Creating 3D modeling app with UE4?

Hello there people!

Since I’ve heard and saw so much about UE4 and how amazing it is for any type of video game, I was wondering how suitable would UE4 be for actually making a software? In this particular case a small 3D polygonal modelling application with a very simple interface and a small number of commands but with quite complex math and algorithms behind it, involving mostly polygons and curves.

So more precisely, my two questions are:
1.How suitable UE4 would be for something like that in terms of performance?
(let’s say I want to make something like Zbrush’s “dynamesh” feature, if anyone here is familiar with it?)

2.How suitable UE4 would be for something like that in terms of time/effort to make something like that in UE4 vs time/effort to do something like that with pure code from scratch.
(keep in mind that I haven’t found a single engine for creating 3D applications so far, and that I would always prefer to have my workflow aided by some 3D engine rather than doing it entirely through code. If there is a way to use some kind of visual interface such as kismet, or some other node based programming in UE4 yet still keep the performance of my application reasonably fast, that would be wonderful).

Answers would be greatly appreciated! :slight_smile:

As I can’t answer your question 100% yet, I am just going to say the following.

I just started working on a 3d modeling application using UE4 myself (codename: Unreal3D), and stripped the source code down to the bare minimum.

The current feature set of “Unreal3D” only includes BSP Geometry, Geometry editing, the Material Editor, as well as saving the scene as a .uscene file.

Performance is very good, though the application in general is not very stable as of yet. However, as a final conclusion I would mention that it is very doable to create a 3d application using UE4, since a lot of the features needed are already there.

Anyways, I wish you all the best in your endeavor.

Cheers

Thanks a lot for the answer Kraken Games!

That’s great to hear, that encourages me, cause as long as the performance of geometry editing is reasonable enough I’m definitely motivated to start with my project.
I’m still not sure how close to realtime the performance would be if I’d to perform some geometry editing operations on a high rez model (like up to a few millions of polygons) in such an application…?

Assuming that UE4 supports importing of high rez models I guess a couple of very simple calculations per each triangle/quad (like calculating normals, angles or the edge length) shouldn’t take eternity :smiley:
I’d be fine even if it took up to 30 minutes to calculate the entire model on an average PC configuration.

Also, I’m glad to hear that I’m not the only one who works on these types of projects.
Likewise, I wish you all the best in your endeavor, and if you have any kind of blog/video/link to your Unreal3D project I’d be very interested to check it out!

#My Remake of 3ds Max

I started remaking 3ds Max in UE4, just for fun.

*"
So more precisely, my two questions are: 1.How suitable UE4 would be for something like that in terms of performance? (let’s say I want to make something like Zbrush’s “dynamesh” feature, if anyone here is familiar with it?)

2.How suitable UE4 would be for something like that in terms of time/effort to make something like that in UE4 vs time/effort to do something like that with pure code from scratch. (keep in mind that I haven’t found a single engine for creating 3D applications so far,"*

#“It’s VERY VERY POSSIBLE” -Rama

#Video

I got as far as dynamically building Torus knots where you can set the exact specifications, and then you can watch it render!

Keep in mind I do the rendering slowly just for fun

Video on Forum

#UV Mapping and Collision

I later added collision and UV Mapping

#My 3ds Max Progress

I had selecteable triangles, could add and delete vertices, and flip normals and all of that. as you can see in video I had no issues rendering extremely high details meshes using DynamicMesh Builder

#Where to Start

Look up how rendering works in BoxCollisionComponent.cpp or SphereComponent.cpp

For legal reasons I can’t post too much code, but this is the general vicinity of what you want:

//~~~~~~~~~~~~~~
// 	 Scene Proxy
//~~~~~~~~~~~~~~
FPrimitiveSceneProxy* USculptor::CreateSceneProxy()
{
	class FDraw3DSceneProxy : public FPrimitiveSceneProxy
	{
	public:
		FDraw3DSceneProxy(USculptor* InComponent)
			:	FPrimitiveSceneProxy(InComponent),
				Sculptor(InComponent)
		{
			bWillEverBeLit = false;
		}

		//Draw Dynamic
		virtual void DrawDynamicElements(FPrimitiveDrawInterface* PDI,const FSceneView* View) OVERRIDE
		{
                    //draw to the PDI here!
                }

#How To

I created a single actor with a single “Scultpor” component which is my custom version of 3ds max.

That single component renders all the geometry for a single object that is being edited and shaped by the user.

So you are always drawing the PDI of a component that is part of an actor, but you can draw a LOT.

This keeps everything contained, and allows me to create or delete my “Canvas3D” whenever I want, or hide it, or move it, as you see in my video.

#Dynamic Mesh Builder

Look up info on dynamic mesh builder in the source code

FDynamicMeshBuilder

Creating Static Meshes at Runtime

Wiki Tutorial:

To get UVs working you will need to study how dynamic Mesh does it and modify the procedural mesh code accordingly.

I posted about it on the forums and on answerhub several times.

#Special For You VegetaDTX

“I have one more question for you Rama if you don’t mind - is it possible to create at least a small percentage of such an application with the blueprint feature in UE4 or some similar feature inside UE4 ? I’m really fluent with node based stuff, I really enjoy it, and I hate pure code even though I am a programmer too. I guess that’s why I fell in love with UE ever since I’va run the UDK for the first time :)”

Absolutely!

And something even better!

You can make your own custom BP nodes tailored to your project!

These are nodes you can access in any blueprint, they are global usage!

You can also make BP nodes specific to a class, like your main 3D app class

#Design Structure

Your main 3D App should be an actor, which has a custom component as I mentioned above

You can have many super classes of your base 3D App Actor class to handle the various aspects of your application.

So there’s only 1 fundamental class involved, with several layers separated out for easy coding and maintainence.

Then you can make a blueprint of the base application AActor class

then you can code your own custom blueprint nodes specific to your class.

It’s as simple as making a function Blueprint Callable

Wiki Tutorial

#Global BP Nodes

For custom nodes you want to use anywhere, use Blueprint Function Library

Wiki Tutorial

#Summary

With UE4 you can make your own graphical node coding system for your application.

This expands its usability for others immediately!

Rama

Wow! Rama thank you very much!
That was so encouraging and insightful. Then I believe that UE4 is just enough for what I need!

I am really impressed by your idea to start building remake of 3Ds Max and especially by the screenshots and vids you’ve provided! You’re doing awesome job man, please keep it up!

Then I guess I should say that my project could be jokingly called “Maya remake” :smiley: but of course it’ll be universes away from it in terms of complexity.
The whole essence of the application that I want to make will be to to completely erase one of the biggest problems in the CG industry, which has been pestering and sabotaging us all for as long as animation and video games exist.
So it may very well boil down to just few sliders, several checkboxes and few buttons, and everything else would be calculated and baked automatically.

I guess that’s why I’m still indecisive about whether I should make a plugin for an already existing 3D software like Maya/Zbrush or if I should make it all from scratch. I prefer the latter because it seems to me that that way I’ll make a greater impact, but hey, maybe I’m wrong who knows, time will tell.

I have one more question for you Rama if you don’t mind - is it possible to create at least a small percentage of such an application with the blueprint feature in UE4 or some similar feature inside UE4 ? I’m really fluent with node based stuff, I really enjoy it, and I hate pure code even though I am a programmer too.
I guess that’s why I fell in love with UE ever since I’va run the UDK for the first time :slight_smile:

Hi, VegetaDTX!

I just found out your question, and it fits perfectly to what I am also trying to accomplish.
I am also studying 3D engines to create a non-game 3D application. All I could find were game engines. Or CAD engines( e.g. Hoops 3D). I just signed up for the UE4 subscription to try it out.

Would you mind to give me your email, so we can exchange our experiences? My email is filipe.scur@gmail.com, feel free to contact me.

Best regards,
Filipe

Rama I thank you from the bottom of my heart man! This is a huge help for someone like me, someone who’s still technically a newbie to all of this, yet someone who has so many ambitions and tons of ideas written down (for some of which I’ve even finished the concept and a rough design document).

You can make your own custom BP nodes
tailored to your project! These are
nodes you can access in any blueprint,
they are global usage! You can also
make BP nodes specific to a class,
like your main 3D app class

With UE4 you can make your own
graphical node coding system for your
application.

You’ve got to be kidding me!!! That’s exactly what I need!

The funny thing is that I always wanted to make my own multipurpose visual, node based programming language or I guess more appropriate name for something like that would be “purely visual IDE for C++”. So technically in some sense, if I am able to prototype my C++ classes in a form of blueprint nodes, I can even make something like that too!

Of course, I’m fully aware of the fact that such an idea is overly ambitious and rather childish, I’m not delusional, I do not expect to make a new big boss among programming languages, it’s just that I believe in that good old “it doesn’t hurt to try”.

Also, thank you so much for giving me a tip on design structure. Considering the point I’m at right now that is very insightful and inspiring.

Sure Filipe!
I’ll be very glad to collaborate with people of the similar interest and visions.
I’ve already sent you a mail.

Perhaps Rama, you and me, could even form some kind of team someday, who knows :wink:

After all, my philosophy on the whole sharing thing is:
Knowledge stinginess leads nowhere, sharing of knowledge leads to prosperity :wink:
It’s only important to find good and trustworthy people everything else is a matter of passion and diligence :slight_smile:

#Resolved

I can’t wait to see what you come up with in terms of your custom BP nodes!

Good Luck VegetaDTX!

#:heart:

Rama

Thanks again so much Rama for everything! Sure if I make anything worth of showing any time soon (and I’ll be busy cause I’m about to get employed full time in June, but I’ll still have some spare time I guess) I’ll definitely be glad to share it!!

And also feel free to give me any links you may have on your projects, or whatever you’re willing to share, I’m always for checking things out! :wink:

Knowledge is power! :slight_smile: Regards! :slight_smile:

Let us know how it goes! Enjoy!

Rama

Hi VegetaDTX and Filipe,

I would love to share experiences too with you guys. Have a tough time going through all the code, trying to get everything in the right order. You can always mail me at thijs.morlion[at]gmail.com

Kind Regards,

Thijs

Hi guys,

I created a google group so anyone who wants to share progress on non-game apps can join us.

https://groups.google.com/forum/?hl=en#!forum/nongameue4

wow. Im trying to do exactly what you guys are doing but it seems you guys are light years away from me. I get the main concept of the design but i have trouble implementing in my project? What I should of done first was do the whole unreal code source zip file then clone it? then theoretically i would be able to make my mesh component? any advice to put me in the the right direction would be really appreciated. I will still try to continue and re read all the notes you guys left behind thank you.