iPortalTeam / ImmersivePortalsModForForge

Non-Euclidean in Minecraft. See through portals and teleport seamlessly.
https://qouteall.fun/immptl/
Apache License 2.0
43 stars 18 forks source link

Portal Flipping breaking scale with custom implementation #44

Closed NextdoorPsycho closed 2 years ago

NextdoorPsycho commented 2 years ago

According to your testing, does the issue occur with ONLY Immersive Portals mod installed?

No

Forge Version

40.1.84

ImmersivePortals Version

Developmental Jar (Im using the API) mod/core: 1.4.12

Latest Log

not applicable (i can still provide if needed)

Crash Report (if applicable)

not applicable

Steps to Reproduce

So this is my implementation. https://github.com/VolmitSoftware/WormholesFML Here is a jar you can try on your local if you want: wormholes.zip

but here is a visual and example: https://gfycat.com/DapperDetailedAntelopegroundsquirrel

What You Expected

When making a portal on the SAME plane, the portals all work fine

So this is what SHOULD happen: https://gfycat.com/DrearyAdeptHamadryad

When breaking with the "break cluster stick" it all breaks fine unlike when the plane is borked: Working Close: https://gfycat.com/ThriftyComplexAntarcticgiantpetrel

What Happened Instead

When making portals on a different plane this happens instead.

This should NOT happen: https://gfycat.com/ScientificGrimyHuemul

Additional Details

I'm not sure if I'm doing something wrong, if I am please correct me. But this seems like a render issue that I'm able to replicate consistently with the API.

Im also in the discord as :⋈-NextdoorPsycho-⋈#0001 if you want to message me there!

Please Read and Confirm The Following

qouteall commented 2 years ago

Seeing from GIF, seems that some of the portal data is broken. You can use /portal view_portal_data to see the portal data.

And this quaternion creation code is weird: https://github.com/VolmitSoftware/WormholesFML/blob/main/src/main/java/com/volmit/wormholes/PortalUtil.java#L57

It's recommended to use DQuaterion.rotationByDegrees DQuaternion.rotationByRadians to create the quaternion.

After all, please tell which specific code you use to edit the portal that caused the issue or I cannot debug this.

NextdoorPsycho commented 2 years ago

Im nor editing the portals, im creating them every instance. The portal util class is just me creating 2 backed portal groups and spawning them in, is my math wrong for the DQuaterion? ill look into that.

Ill also get back to you on the /portal view_portal_data in a few!

NextdoorPsycho commented 2 years ago

This is the normal portal: image image image image

And this is the Borked portal: image image image image

Nothing Stands out off the bat to me, so im unsure, in fact the only difference is rotationA

qouteall commented 2 years ago

The rotationA, rotationB, rotationC, rotationD are all zero, this shows that the quaternion is broken.

A quaternion is a 4D unit vector, see this for more explanations about quaternion: https://qouteall.fun/immptl/wiki/API-for-Other-Mods.html#about-rotations-and-quaternions

NextdoorPsycho commented 2 years ago

How/Where are you getting the DQuaternion setup for your PortalHelper blocks? im having a hard time finding that in the repo. And thanks for the help. I think the Quaternion Math is not correct now that you mention it

qouteall commented 2 years ago

The portal helper quaternion is setup using DiligentMatcher matching the frame https://github.com/iPortalTeam/ImmersivePortalsMod/blob/1.19/imm_ptl_core/src/main/java/qouteall/imm_ptl/core/portal/custom_portal_gen/form/AbstractDiligentForm.java#L23

It's a little complex.

NextdoorPsycho commented 2 years ago

@qouteall You were right, the logic was bad. was normalizing when it could have just used the literal / identity. thanks for the help!