aframevr / aframe

:a: Web framework for building virtual reality experiences.
https://aframe.io/
MIT License
16.61k stars 3.94k forks source link

Why are you using "super-three" ? #4898

Closed Seikida closed 2 years ago

Seikida commented 3 years ago

Hello, You have your Three.js fork but I think maintaining it is costly and sometimes it is hard to bump into the upstream Three.js. So is it possible to replace your fork to the official one by removing your specific code from Three.js.

Your fork "super-three" hasn't been updated for many years, while official Three.js is regularly updated.

→ You can check (your fork): https://github.com/supermedium/three.js → Official Three.js: https://github.com/mrdoob/three.js

If you want continue to use "super-three" ... why not because can you update "super-three" with every Three.js update?

Thank you

vincentfretin commented 3 years ago

Hi, there was a long discussion on this already here #4806

vincentfretin commented 3 years ago

https://www.npmjs.com/package/super-three had a 0.128.3 release 19 days ago. I guess based on the branch https://github.com/supermedium/three.js/commits/super-r128 Is that right @dmarcos? Each time you update super-three, you create a new branch from threejs repo and rebase the needed changes on top?

dmarcos commented 3 years ago

@vincentfretin Yes, I create a branch, rebase and publish on npm. A-Frame master is already using super r128

dmarcos commented 3 years ago

We use a thin three fork because we ship features not included in THREE upstream like for instance WebVR support (Firefox doesn't ship WebXR). The fork also decouples A-Frame and THREE roadmaps. e.g: WebXR compositor layers shipped in A-Frame in early 2021 and THREE only offered support a few weeks ago. From A-Frame we have no control on when PRs and features will ship / land in upstream THREE. A fork gives us flexibility.

FYI, the fork was updated to THREE r128 a few weeks ago (a couple of versions behind THREE upstream) and already merged in master that you can use through master builds. Look at branches for up to date code.

Any features you missed that are not in THREE r128?

tripdragon commented 2 years ago

Just a note, THREE is at 135 now

Why can you not add a layer over THREE after it loads instead? Subclasses or monkey patching whatnot. Its hard to tell without setting up a second project just in THREE what's could be broken wasting a lot of time. Material Nodes is constantly in flux but its a pretty necessary tool set from THREE for example for those that need it. Im not saying you don't have it, its just an example. They are also fixing things in the lighting like Lightmaps discussions.

And there there's Hubs which has its own layer of OY

dmarcos commented 2 years ago

@tripdragon FYI, master is on THREE r133. See commit messages for link to latest builds: https://github.com/aframevr/aframe/commits/master

We don't monkey patch THREE. We maintain our own thin fork with support for some old APIs (e.g WebVR) and also fix bugs add features when PRs take long to land in THREE mainstream (e.g A-Frame had early support for WebXR compositor layers before THREE). There shouldn't be major API changes.

You can always see on console what version of THREE is A-Frame at. THREE changelog applies to keep track of changes. e.g A-Frame 1.2.0 is on THREE r125

  A-Frame Version: 1.2.0 (Date 2021-02-05, Commit #b220fa00) (aframe-master.min.js, line 2718)
  THREE Version (https://github.com/supermedium/three.js): – "^0.125.1"

Hopefully it's more clear now. Thanks

dmarcos commented 2 years ago

Master is now on latest THREE r136. I think there's nothing actionable on A-Frame side. We can reopen if necessary

tripdragon commented 2 years ago

Just replying to say thank you for the notes, though I don't see the new version in a cdn, do I need to pull master? Oh I see, the links are in the git logs ba393c305e7636f76b304699f82fc83dac18e4c2 Update master CDN URL. (https://cdn.jsdelivr.net/gh/aframevr/aframe@8… …

Thats a little easy to miss since its not on the front page readme and the link does not have a version in the url

related issue https://github.com/aframevr/aframe/issues/5000

arpu commented 2 years ago

looks like with newer r137 mixing the aframe THREE require('three') and import parts from three in own components does not work anymore

would love to see aframe with threejs imports

dmarcos commented 2 years ago

Where do you see it failing? Any links?

arpu commented 2 years ago

there was a error on r137 r137.1 should fix this! https://discourse.threejs.org/t/r137-import-jsm-module-with-webpack-build-pipeline-error-since-r137/34148/6

dmarcos commented 2 years ago

Thanks. So it’s a fix on THREE side as I understand? Any PR open?

flankechen commented 1 year ago

@dmarcos is there spec of "own thin fork of three.js" ? did you mean this "super-three" actually pruning some three.js? like I find Object3D.matrixWorldAutoUpdate properties in three.js documentation. but not exist in aframe 1.3.0 threejs object3d.

vincentfretin commented 1 year ago

@flankechen The feature you're talking about was merged in three r144, so it's not in aframe 1.3.0 that uses three r137. Aframe master is currently using r144 via super-three fork that add some features back, see the 8 latest commit in the branch https://github.com/supermedium/three.js/commits/super-r144 You currently need to do your own build from master, the bot is down.