delaneyj / three.net

C# port of Three.js
MIT License
80 stars 26 forks source link

Possible opportunity to join forces on Three.js C# bindings #5

Open DaniilVeriga opened 8 years ago

DaniilVeriga commented 8 years ago

Hello @delaneyj!

I am from Bridge.NET. Today a Bridge community member shared the Bridge C# bindings for Three.js. http://forums.bridge.net/forum/general/open-discussions/1320?p=1548#post1548 https://github.com/guidovanhilst/SharpThreejs http://creativecadtechnology.com/threejssharp/

Then I accidentally ran into your project in Google search and read "Help wanted" in Readme. It really looks like the goals of your project and @guidovanhilst's one are similar (most like, just the same). Having two similar projects are awesome, but maybe join forces is even better and there is an opportunity for that. I believe Bridge would help a lot for your goals as a platform. Guys, it is up to you whatever you decide. My initial mission was to make you aware of each other:) If you decide to try collaborating with each other. Fantastic. If you choose Bridge as a base - awesome! We'll be very happy to assist where we can. If you decide to go another way - that is fine as well.

delaneyj commented 8 years ago

Hey @DaniilVeriga,

So there seems to be some confusion to my project's aim. What I had originally tried to do (and was successful but didn't quite finish) is porting Three.js to C#. This means converting all the GLES bindings and internal logic to be done in C#/GL4. Basically would allow you to write native windows/mono apps (including android/iphone) C# gl apps as part of a game engine. This is no way was a set of bindings, but actually a rewrite of Three.js.

While there are bindings for low level GL there wasn't really a C# graphics engine beyond that that was easily understandable. Most of the parts are ported minus skinning/morphing and render to target. Deferred rendering wasn't part of my initial goal but is an open issue. Lots of work went into making it more C# in design where possible while staying true to three.js overall patterns (at least until the port was completed).

If someone was trying to rewrite Three.js to use in Bridge.NET then my project would get them most of the way there but honestly don't see the value over using Three.js binding unless you are able to do stuff like dead code elimination or some extra debugging.

I've been doing mostly React/Falcor/Cerebral/Node work lately. While most of my current pipeline is babel es6/7 my true passion is C# (especially 6+). I'd be really interested in how far bridge.net has come in the last 6 months or so.

guidovanhilst commented 8 years ago

Hello @delaneyj https://github.com/delaneyj!,

Thank you for your reply.

Yes I think I understand the difference in our project aims:

You are porting threejs to c#, thus porting the implementation of three js! I think your aim is to make a Three.net library that can be used for .net(mono) desktop/mobile apps using c#.

My aim is to make web-apps with Three.js(webgl) but not coding in javascript but in c#.

I had a look on your code and is looking very good and complete? you use Pencil.Gaming as renderer?. (Pencil.Gaming.Graphics.GL)

I was thinking about the following: If we use the same underlying low-level OpenGL-api. Your low level api is based on Pencil.Gaming and I am using Webgl(from Bridge.net.) both in c# then we could use both your high level port of threeJs.

You can use Three.net directly in .net environments. (mono) desktop/mobile apps senca etc)

And I can use bridge.net to "compile" your high level code to java-script (this becomes then a new generated javascript library. Witch can be used to make javascript web applications.

I don't know witch functionality you are using from Pencil.Gaming and if there interface is much richer than just low level gl calls?

To make the above work; we need a common low level gl interface.

If you are interested or have some thought about it, please let me know.

Best regards,

Guido

On Fri, Feb 12, 2016 at 6:11 AM, Delaney notifications@github.com wrote:

Hey @DaniilVeriga https://github.com/DaniilVeriga,

So there seems to be some confusion to my project's aim. What I had originally tried to do (and was successful but didn't quite finish) is porting Three.js to C#. This means converting all the GLES bindings and internal logic to be done in C#/GL4. Basically would allow you to write native windows/mono apps (including android/iphone) C# gl apps as part of a game engine. This is no way was a set of bindings, but actually a rewrite of Three.js.

While there are bindings for low level GL there wasn't really a C# graphics engine beyond that that was easily understandable. Most of the parts are ported minus skinning/morphing and render to target. Deferred rendering wasn't part of my initial goal but is an open issue. Lots of work went into making it more C# in design where possible while staying true to three.js overall patterns (at least until the port was completed).

If someone was trying to rewrite Three.js to use in Bridge.NET then my project would get them most of the way there but honestly don't see the value over using Three.js binding unless you are able to do stuff like dead code elimination or some extra debugging.

I've been doing mostly React/Falcor/Cerebral/Node work lately. While most of my current pipeline is babel es6/7 my true passion is C# (especially 6+). I'd be really interested in how far bridge.net has come in the last 6 months or so.

— Reply to this email directly or view it on GitHub https://github.com/delaneyj/three.net/issues/5#issuecomment-183182230.

DaniilVeriga commented 8 years ago

Now I see the difference of the projects. Yeah, quite different:) Though, still big similarities - Three.js and coding in C#. But yes, it might be not enough for possible collaboration.

I've been doing mostly React/Falcor/Cerebral/Node work lately. While most of my current pipeline is babel es6/7 my true passion is C# (especially 6+).

Since you a React user and your passion is C#, then I hope the following information is worth to read. One of the biggest Bridge adopters is also a React user. He implemented Bridge bindings for React: https://github.com/ProductiveRage/Bridge.React https://www.nuget.org/packages/Bridge.React

Also he wrote a series of related blog posts on using the React+Bridge combination. The most recent blog post just appeared yesterday and contains a very interesting statement - "an incredible feature for Bridge and a triumph for writing front-end code in C#". If you'd like to read in details, here is a link. http://productiverage.com/easy-purecomponent-react-performance-boosts-for-bridgenet

If you try Bridge.React ever, your feedback would be greatly appreciated. For example, in this forum thread.

I'd be really interested in how far bridge.net has come in the last 6 months or so.

You are very welcome in the Bridge forums or GitHub with any questions/feedback.