Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Further updates to configurable options #15

Open
RealSourceOfficial opened this issue Sep 4, 2024 · 9 comments
Open

Further updates to configurable options #15

RealSourceOfficial opened this issue Sep 4, 2024 · 9 comments

Comments

@RealSourceOfficial
Copy link
Contributor

RealSourceOfficial commented Sep 4, 2024

Describe the solution you'd like
Ability to change the intensity of glow between objects, as the current system of glow makes tags nigh unreadable. Background color being configurable would also be nice if possible. Potentially adding text resizing would also be a nice feature that'd help with readability, and maybe a font selection? I honestly prefer the font of obsidian itself, thought I'm not 100% sure if it's possible to set the font with whatever 3d library your using. I have further suggestions I'd be down to discuss on discord, I'm a half-qualified developer :) (@Sourceofficial on discord)

Describe alternatives you've considered
Reducing the overall glow of all objects, however this would take away from the style of the plugin

Additional context
Overlapping tags have this problem a lot more
image

@kctekn
Copy link
Owner

kctekn commented Sep 4, 2024

Thanks for your feeckback and suggestions. You can increase the link distance to view all the connections, especially when dealing with extensive text. Furthermore, additional customization might impose a significant workload on the system rendering when there are many nodes present. I will consider these options if they are feasible.

@RealSourceOfficial
Copy link
Contributor Author

RealSourceOfficial commented Sep 4, 2024

I'd recommend a "lower performance" mode - for mobile devices and laptops and such - though high-end desktops can definitely handle this without any problem. It'd be a lot to implement, however if you need any help I'm willing to try, it was my suggestion after all. I wonder if I can get the 3d engine to take advantage of graphics cards in some way... I know hardware acceleration is an obvious, but leveraging that kind of performance with 3d plugins like this would definitely help on lower end systems. Again, not 100% sure how it works but potentially something to look into.

What rendering engine are you using for this? I'd be happy to take a look at some potential improvements to performance when I have the time (starting school today, so might be a little busy). I'll clone the repo later and take a look at any obvious things I can find.

@kctekn
Copy link
Owner

kctekn commented Sep 4, 2024

That's a good point! I'm also considering adding a lower performance mode. However, it might reduce visual details and make the experience less engaging, especially when dealing with large amounts of content that could feel less interesting without the full visual effects. Currently, the plugin uses Three.js, which utilizes WebGL for low-level hardware acceleration. I'm glad you're willing to help! More customization always means more work, but I'm still figuring out what exactly needs to be done.

@RealSourceOfficial
Copy link
Contributor Author

RealSourceOfficial commented Sep 5, 2024

Suggestions from this morning:

  • While zoomed out, hovering over any node with the mouse blocks the text as it's placed on the bottom - perhaps rendering the text OVER the node instead of under Doesn't occur anymore, appears to be inconsistent. Will look into this more.
  • Nested tags (such as this plugin)
  • "Low performance mode" should probably be what is already implemented, as a default of sorts - Even on my 2015 Macbook Air it runs perfectly fine, and not many people have devices that low-end from my experience (I do get it does get worse with increasingly large node trees, though some simple optimizations may do better here)
  • Default link spacing should definitely be increased, as I said earlier it's nigh unreadable while zoomed out. Potentially higher maximum distance?
  • Groups (similar to how the default graph view has) that support tags.
  • Tag color synchronization (though that'll take the choosing of a tag-color plugin, as I think the color aspect would be outside of the scope of this plugin.)
  • Tooltips for moving the graph, as it could be confusing to first time users.

@kctekn
Copy link
Owner

kctekn commented Sep 5, 2024

Thank you for your feedback!

Nested Tags: The plugin already supports nested tags. You can create nested tags by using the format #tag/sub-tag/another-sub-tag. The plugin will automatically generate a hierarchy for these tags, with #another-sub-tag linking to #sub-tag, which in turn links to #tag. All related markdown files will link to the root tag (#tag) for a clearer graph view. You can also tag content with just #tag, #tag/sub-tag, or #tag/sub-tag/another-sub-tag, and the plugin will create the appropriate hierarchy and calculate the tag counts accordingly. I’ll consider creating a Wiki to provide more detailed documentation on this feature.

Performance Optimization: While the plugin performs well on most devices, including older ones like your 2015 MacBook Air, some users may have very large node trees with over 10,000 nodes. Therefore, ongoing optimization is always necessary to ensure smooth performance across all scenarios.

Link Spacing: I agree that the default link spacing should be increased, especially in node text mode. I’m considering adding an option to turn off text display, which would make the graph clearer. This way, users can choose the most suitable view based on their specific use case.

Groups: The idea of adding groups, similar to the default graph view, is interesting and might be implemented in a future update.

Tag Color Synchronization: Currently, tag color synchronization needs to be done manually. Integrating this feature would likely require a separate tag-color plugin, as it might be outside the scope of this plugin.

Tooltips: Adding tooltips for moving the graph is a great suggestion. This would help first-time users navigate the graph more easily.

@RealSourceOfficial
Copy link
Contributor Author

RealSourceOfficial commented Sep 5, 2024

I'll take a look at starting on link spacing and tooltips for now while I get used to the codebase, I've already got it cloned locally. Do you use any extensions for developing on Obsidian? I use VSCode so checking my work isn't the easiest.

@kctekn
Copy link
Owner

kctekn commented Sep 5, 2024

I'm also using VSCode, and I think it should be sufficient for now. Since the plugin is still in the development phase, the focus is more on functionality rather than perfecting the code style at this point :). I hope that's okay with you—I plan to clean things up and make the code more polished later on.

@RealSourceOfficial
Copy link
Contributor Author

Just a heads up for the time being, I've started school recently, and I'm absolutely swamped with high level classes. Updates are going to be few and far between with me, as free time is limited between working on an hour of AP homework, reading textbooks, etc etc. You know the deal. I'll probably be available over the weekends and that's where I'll push a majority of my updates, but I do have a lot on my plate so don't expect too much for now.

That being said, where is the class you initialize the page for obsidian? I'm new to developing to obsidian, and still getting used to Three.js. If you could provide some simple kind of top-down overview of the class names I may be able to work faster.

@kctekn
Copy link
Owner

kctekn commented Sep 6, 2024

Basically, you can turn to Obsidian Developer Docs for an overview and startup, and also with three.js. Actully the 3d-force-graph is what I have used. You can take a look at them for a good start!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants