Accueil > > > SCROLL DE CAMERA DANS LE VIEWPORT
SCROLL DE CAMERA DANS LE VIEWPORT
Information sur la source
Description
La position de la caméra est calculée autour d'un MeshCube Quand on change un des trois scrollbars liés au Viewport.
Source
-
- Imports System.Windows.Media.Media3D
-
- Module Main '....... Affiche un MeshGeometry sur un plateau.(Viewport et scrollbars......)
-
- Dim Projection As New Plateau3D(MeshCube(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1))
-
- Dim WithEvents Cadre As New Window With {.Height = 300, .Width = 300}
- Dim WithEvents Appli As New Application() 'Systeme
-
- Sub Main()
- Cadre.Content = Projection.Pupitre.Panneau
- Appli.Run(Cadre)
- End Sub '............................................................. END Main
-
-
- 'Mise en place...............
-
- ''' <summary>
- ''' retourne un cube de garniture.. a essais.
- ''' </summary>
- ''' <param name="Pos"></param>
- ''' <param name="Prof"></param>
- ''' <param name="Haut"></param>
- ''' <param name="Larg"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Function MeshCube(ByVal Pos As Point3D, _
- ByVal Prof As Integer, _
- ByVal Haut As Integer, _
- ByVal Larg As Integer) As MeshGeometry3D 'Resille_Cube_Test
-
- Dim Demi_Profondeur As Integer = Prof
- Dim Demi_Largeur As Integer = Larg
- Dim Demi_Hauteur As Integer = Haut
-
- 'Face inférieure
- Dim Pos_1 As New Point3D(Pos.X, Pos.Y, Pos.Z + Demi_Largeur)
- Dim Pos_2 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z)
- Dim Pos_3 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z + Demi_Largeur)
-
- 'Face supérieure
- Dim Pos_4 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z)
- Dim Pos_5 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z)
- Dim Pos_6 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
- Dim Pos_7 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
- 'et les 4 dernières faces
- Dim Triangles() As Integer = {4, 5, 6, 5, 6, 7, 0, 1, 2, 1, 2, _
- 3, 0, 2, 4, 2, 4, 5, 1, 3, 6, 3, 6, 7, 0, 1, 4, 1, 4, 6, 2, 3, 5, 3, 5, 7}
- Dim M As New MeshGeometry3D
- M.Positions.Add(Pos)
- M.Positions.Add(Pos_1)
- M.Positions.Add(Pos_2)
- M.Positions.Add(Pos_3)
- M.Positions.Add(Pos_4)
- M.Positions.Add(Pos_5)
- M.Positions.Add(Pos_6)
- M.Positions.Add(Pos_7)
- For i = 0 To 35
- M.TriangleIndices.Add(Triangles(i))
- Next i
- Return M
- End Function
-
-
- ''' <summary>
- ''' Génére un Viewport .. à garnir.
- ''' </summary>
- ''' <param name="Resille"></param>
- ''' <returns></returns>
- ''' <remarks></remarks>
- Function Maille_Test(ByVal Resille As MeshGeometry3D) _
- As Viewport3D
- Dim Essai As New Viewport3D
-
- Dim Lumiere As New AmbientLight(Colors.White)
- Dim Eclairage As New ModelVisual3D
- Eclairage.Content = Lumiere
- Essai.Children.Add(Eclairage)
-
- Dim Cam As New PerspectiveCamera
- With Cam
- .Position = New Point3D(0, 0, 10)
- .LookDirection = New Vector3D(0, 0, -1)
- .UpDirection = New Vector3D(0, 1, 0)
- .FieldOfView = 45
- End With
- Essai.Camera = Cam
-
- Dim Volume As New ModelVisual3D
- Dim Rectangle As New GeometryModel3D
- Dim Color As New DiffuseMaterial(Brushes.Cyan)
- Dim Colorback As New DiffuseMaterial(Brushes.Red)
-
- Rectangle.Geometry = Resille '_Cube _
- '(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1)
- Rectangle.Material = Color
- Rectangle.BackMaterial = Colorback
- Volume.Content = Rectangle
- Essai.Children.Add(Volume)
-
- Return Essai
- End Function
-
-
- ''' <summary>
- ''' lie trois curseurs (Scroll3D) et un Viewport.
- ''' </summary>
- ''' <remarks></remarks>
- Public Class Plateau3D
- Friend Vision As Viewport3D
- Friend WithEvents Pupitre As New Scroll3D
-
- Dim Origine As New Point3D(0, 0, 0)
- Dim Eloignement As Integer = 1
- Dim Latitude As Integer = 0
- Dim Longitude As Integer = 0
-
-
- Friend Sub ValueChanged() Handles Pupitre.ValueChanged '(ByVal NewValue As Point3D)
- Dim Cam As PerspectiveCamera = Vision.Camera
- REM ' Position de la caméra.
- Dim Position_Camera As Point3D = Euclide(Pupitre.Hbar.Value, Pupitre.Vbar.Value, Pupitre.Zbar.Value)
- Cam.Position = New Point3D(Position_Camera.X, Position_Camera.Y, Position_Camera.Z)
- Cam.LookDirection = New Vector3D(Origine.X - Position_Camera.X, _
- Origine.Y - Position_Camera.Y, _
- Origine.Z - Position_Camera.Z)
- End Sub
-
- Friend Sub New(ByVal Filet As MeshGeometry3D)
- Vision = Maille_Test(Filet)
- Pupitre.Panneau.Children.Add(Vision)
- Dim Matrice As Matrix3D = Vision.Camera.Transform.Value
- ValueChanged()
- End Sub
- End Class
-
-
- ''' <summary>
- ''' Scrolls circulaires et éloignement.
- ''' </summary>
- ''' <remarks>User control composé de trois scrollBars</remarks>
- Public Class Scroll3D
-
- Friend Panneau As New Grid
- Event ValueChanged() '(ByVal NewValue As Media3D.Point3D)
-
- 'Rotation Horizontale
- Friend WithEvents Hbar As New Primitives.ScrollBar With { _
- .ToolTip = "Latitude", _
- .Orientation = Orientation.Horizontal, _
- .Margin = New Thickness(0, 180, 0, 0), _
- .Minimum = -90, _
- .Maximum = 90, _
- .LargeChange = 10, _
- .Value = 0}
-
- 'Rotation Verticale
- Friend WithEvents Vbar As New Primitives.ScrollBar With { _
- .ToolTip = "Longitude", _
- .Orientation = Orientation.Horizontal, _
- .Margin = New Thickness(0, 210, 0, 0), _
- .Minimum = 0, _
- .Maximum = 24, _
- .LargeChange = 3, _
- .Value = 12}
-
- Friend WithEvents Zbar As New Primitives.ScrollBar With { _
- .ToolTip = "Eloignement", _
- .Orientation = Orientation.Horizontal, _
- .Margin = New Thickness(0, 240, 0, 0), _
- .Minimum = 5, _
- .Maximum = 10, _
- .LargeChange = 1, _
- .Value = 5} 'Min
-
- Friend Sub New()
- Panneau.Children.Add(Hbar)
- Panneau.Children.Add(Vbar)
- Panneau.Children.Add(Zbar)
- End Sub
-
- Friend Sub HBar_VC(ByVal sender As Object, _
- ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
- Handles Hbar.ValueChanged
- RaiseEvent ValueChanged() '(New Media3D.Point3D(e.NewValue, 0, 0))
- End Sub
- Friend Sub VBar_VC(ByVal sender As Object, _
- ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
- Handles Vbar.ValueChanged
- RaiseEvent ValueChanged() '(New Media3D.Point3D(0, e.NewValue, 0))
- End Sub
- Friend Sub ZBar_VC(ByVal sender As Object, _
- ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
- Handles Zbar.ValueChanged
- RaiseEvent ValueChanged() '(New Media3D.Point3D(0, 0, e.NewValue))
- End Sub
-
- End Class
-
- Function Euclide(ByVal Longitude As Integer, _
- ByVal Latitude As Integer, _
- ByVal Eloignement As Integer, _
- Optional ByVal OrigineX As Integer = 0, _
- Optional ByVal OrigineY As Integer = 0, _
- Optional ByVal OrigineZ As Integer = 0)
-
- Dim P As New Point3D(Eloignement * (Math.Cos(Longitude) * Math.Cos(Latitude) + OrigineX), _
- Eloignement * (Math.Sin(Longitude) + OrigineY), _
- Eloignement * (Math.Cos(Longitude) * Math.Sin(Latitude) + OrigineZ))
- Return P
- End Function
-
-
- End Module
-
-
-
Imports System.Windows.Media.Media3D
Module Main '....... Affiche un MeshGeometry sur un plateau.(Viewport et scrollbars......)
Dim Projection As New Plateau3D(MeshCube(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1))
Dim WithEvents Cadre As New Window With {.Height = 300, .Width = 300}
Dim WithEvents Appli As New Application() 'Systeme
Sub Main()
Cadre.Content = Projection.Pupitre.Panneau
Appli.Run(Cadre)
End Sub '............................................................. END Main
'Mise en place...............
''' <summary>
''' retourne un cube de garniture.. a essais.
''' </summary>
''' <param name="Pos"></param>
''' <param name="Prof"></param>
''' <param name="Haut"></param>
''' <param name="Larg"></param>
''' <returns></returns>
''' <remarks></remarks>
Function MeshCube(ByVal Pos As Point3D, _
ByVal Prof As Integer, _
ByVal Haut As Integer, _
ByVal Larg As Integer) As MeshGeometry3D 'Resille_Cube_Test
Dim Demi_Profondeur As Integer = Prof
Dim Demi_Largeur As Integer = Larg
Dim Demi_Hauteur As Integer = Haut
'Face inférieure
Dim Pos_1 As New Point3D(Pos.X, Pos.Y, Pos.Z + Demi_Largeur)
Dim Pos_2 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z)
Dim Pos_3 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y, Pos.Z + Demi_Largeur)
'Face supérieure
Dim Pos_4 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z)
Dim Pos_5 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z)
Dim Pos_6 As New Point3D(Pos.X, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
Dim Pos_7 As New Point3D(Pos.X + Demi_Profondeur, Pos.Y + Demi_Hauteur, Pos.Z + Demi_Largeur)
'et les 4 dernières faces
Dim Triangles() As Integer = {4, 5, 6, 5, 6, 7, 0, 1, 2, 1, 2, _
3, 0, 2, 4, 2, 4, 5, 1, 3, 6, 3, 6, 7, 0, 1, 4, 1, 4, 6, 2, 3, 5, 3, 5, 7}
Dim M As New MeshGeometry3D
M.Positions.Add(Pos)
M.Positions.Add(Pos_1)
M.Positions.Add(Pos_2)
M.Positions.Add(Pos_3)
M.Positions.Add(Pos_4)
M.Positions.Add(Pos_5)
M.Positions.Add(Pos_6)
M.Positions.Add(Pos_7)
For i = 0 To 35
M.TriangleIndices.Add(Triangles(i))
Next i
Return M
End Function
''' <summary>
''' Génére un Viewport .. à garnir.
''' </summary>
''' <param name="Resille"></param>
''' <returns></returns>
''' <remarks></remarks>
Function Maille_Test(ByVal Resille As MeshGeometry3D) _
As Viewport3D
Dim Essai As New Viewport3D
Dim Lumiere As New AmbientLight(Colors.White)
Dim Eclairage As New ModelVisual3D
Eclairage.Content = Lumiere
Essai.Children.Add(Eclairage)
Dim Cam As New PerspectiveCamera
With Cam
.Position = New Point3D(0, 0, 10)
.LookDirection = New Vector3D(0, 0, -1)
.UpDirection = New Vector3D(0, 1, 0)
.FieldOfView = 45
End With
Essai.Camera = Cam
Dim Volume As New ModelVisual3D
Dim Rectangle As New GeometryModel3D
Dim Color As New DiffuseMaterial(Brushes.Cyan)
Dim Colorback As New DiffuseMaterial(Brushes.Red)
Rectangle.Geometry = Resille '_Cube _
'(New Point3D(-0.5, -0.5, -0.5), 1, 1, 1)
Rectangle.Material = Color
Rectangle.BackMaterial = Colorback
Volume.Content = Rectangle
Essai.Children.Add(Volume)
Return Essai
End Function
''' <summary>
''' lie trois curseurs (Scroll3D) et un Viewport.
''' </summary>
''' <remarks></remarks>
Public Class Plateau3D
Friend Vision As Viewport3D
Friend WithEvents Pupitre As New Scroll3D
Dim Origine As New Point3D(0, 0, 0)
Dim Eloignement As Integer = 1
Dim Latitude As Integer = 0
Dim Longitude As Integer = 0
Friend Sub ValueChanged() Handles Pupitre.ValueChanged '(ByVal NewValue As Point3D)
Dim Cam As PerspectiveCamera = Vision.Camera
REM ' Position de la caméra.
Dim Position_Camera As Point3D = Euclide(Pupitre.Hbar.Value, Pupitre.Vbar.Value, Pupitre.Zbar.Value)
Cam.Position = New Point3D(Position_Camera.X, Position_Camera.Y, Position_Camera.Z)
Cam.LookDirection = New Vector3D(Origine.X - Position_Camera.X, _
Origine.Y - Position_Camera.Y, _
Origine.Z - Position_Camera.Z)
End Sub
Friend Sub New(ByVal Filet As MeshGeometry3D)
Vision = Maille_Test(Filet)
Pupitre.Panneau.Children.Add(Vision)
Dim Matrice As Matrix3D = Vision.Camera.Transform.Value
ValueChanged()
End Sub
End Class
''' <summary>
''' Scrolls circulaires et éloignement.
''' </summary>
''' <remarks>User control composé de trois scrollBars</remarks>
Public Class Scroll3D
Friend Panneau As New Grid
Event ValueChanged() '(ByVal NewValue As Media3D.Point3D)
'Rotation Horizontale
Friend WithEvents Hbar As New Primitives.ScrollBar With { _
.ToolTip = "Latitude", _
.Orientation = Orientation.Horizontal, _
.Margin = New Thickness(0, 180, 0, 0), _
.Minimum = -90, _
.Maximum = 90, _
.LargeChange = 10, _
.Value = 0}
'Rotation Verticale
Friend WithEvents Vbar As New Primitives.ScrollBar With { _
.ToolTip = "Longitude", _
.Orientation = Orientation.Horizontal, _
.Margin = New Thickness(0, 210, 0, 0), _
.Minimum = 0, _
.Maximum = 24, _
.LargeChange = 3, _
.Value = 12}
Friend WithEvents Zbar As New Primitives.ScrollBar With { _
.ToolTip = "Eloignement", _
.Orientation = Orientation.Horizontal, _
.Margin = New Thickness(0, 240, 0, 0), _
.Minimum = 5, _
.Maximum = 10, _
.LargeChange = 1, _
.Value = 5} 'Min
Friend Sub New()
Panneau.Children.Add(Hbar)
Panneau.Children.Add(Vbar)
Panneau.Children.Add(Zbar)
End Sub
Friend Sub HBar_VC(ByVal sender As Object, _
ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
Handles Hbar.ValueChanged
RaiseEvent ValueChanged() '(New Media3D.Point3D(e.NewValue, 0, 0))
End Sub
Friend Sub VBar_VC(ByVal sender As Object, _
ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
Handles Vbar.ValueChanged
RaiseEvent ValueChanged() '(New Media3D.Point3D(0, e.NewValue, 0))
End Sub
Friend Sub ZBar_VC(ByVal sender As Object, _
ByVal e As RoutedPropertyChangedEventArgs(Of Double)) _
Handles Zbar.ValueChanged
RaiseEvent ValueChanged() '(New Media3D.Point3D(0, 0, e.NewValue))
End Sub
End Class
Function Euclide(ByVal Longitude As Integer, _
ByVal Latitude As Integer, _
ByVal Eloignement As Integer, _
Optional ByVal OrigineX As Integer = 0, _
Optional ByVal OrigineY As Integer = 0, _
Optional ByVal OrigineZ As Integer = 0)
Dim P As New Point3D(Eloignement * (Math.Cos(Longitude) * Math.Cos(Latitude) + OrigineX), _
Eloignement * (Math.Sin(Longitude) + OrigineY), _
Eloignement * (Math.Cos(Longitude) * Math.Sin(Latitude) + OrigineZ))
Return P
End Function
End Module
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Détection Position X Y [ par alex2100 ]
Bonjour à tous,Bon voici mon probleme, Mon patron ma demander de concevoir des cameras de surveillance. J'ai fait ma plaquette electronique connecter
Garder la position du scroll d'un datagrid [ par diablot2 ]
Bonjour je développe une application web en asp.net vb.net et mon problème est que j'ai un datagrid avec un scrollbar et que lors du cl
Sauvegarder la position du scroll d'un datagrid [ par diablot2 ]
Bonjour je développe une application web en asp.net vb.net et mon problème est que j'ai un datagrid avec un scrollbar et que lors du cl
Sauvegarder la position du scroll d'un datagrid [ par diablot2 ]
Bonjour je développe une application web en asp.net vb.net et mon problème est que j'ai un datagrid avec un scrollbar et que lors du cl
FolderBrowserDialog1 (position scroll sur le dossier) [ par MiciM ]
Salut ! J'utilise le FolderBrowserDialog1 pour rechercher un dossier afin d'afficher le contenu dans une listbox. Tout marche bien sauf que le FolderB
VB.Net Panel AutoScroll D.finir une position [ par JeffC1977 ]
Salut...J'utilise un Panel et j'ai mis un PictureBox à l'intérieur du Panel.J'ai mis AutoScroll à True car monPictureBox est plus gros que mon Panel.C
Position d'affichage MessageBox [ par Marneus73 ]
Bonjour à tousEst-il possible de changer la position d'affichage d'une MessageBox ? Par exemple au lieu de l'afficher au milieu de l'écran, la mettre
Position de ScrollBars [ par Marneus73 ]
Bonjour à tous,Est il possible d'empecher un utilisateur de cliquer sur un bouton tant qu'il n'a pas lu tout le texte contenu dans une RichtextBox ? A
[Probleme] - Bouton renvoyant une donnée dans une case texte. [ par telodoo ]
Bonjour,Je souhaite faire un programme d'apprentissage a la strategie du petit tapis au Poker Texas Hold'em. Voici comment se presente celui-ci :<br /
Obtenir la position du curseur à l'écran ? [ par Arnal88 ]
Bonjour,Je travaille sur un programme en VB2005 qui possède une NotifyIcon dans la barre des tâches.Lorsque je clique sur l'icône, je fais apparaître
|
Derniers Blogs
ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0ETENDRE LE TEAM WEB ACCESS DE TFS 2012 - STEP 0 par Philess
L'extensibilité du Team Web Access
Le Web Access (site d'équipe) de Team Foundation Server a été complètement réécrit dans la version 2012 avec pas moins de 400.000 lignes de JavaScript. Ce nouveau modèle a été pensé pour offrir de grandes...
Cliquez pour lire la suite de l'article par Philess SIMULER FACILEMENT L'ENVOI DE MAILSIMULER FACILEMENT L'ENVOI DE MAIL par JeremyJeanson
il m'a été demandé, à plusieurs reprises, comment je faisais pour simuler l'envoi de mail lors de mes démos de Workflow Foundation. Ma solution est plutôt simple : j'utilise la configuration par défaut du SmtpClient et j'oriente les mails vers un dossier ...
Cliquez pour lire la suite de l'article par JeremyJeanson VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES !VOTEZ POUR LE TOP 10 DES INFLUENCEURS SHAREPOINT FRANCOPHONES ! par Patrick Guimonet
Si ce n'est déjà fait (comme plus de 600 personnes déjà), il est encore temps de voter pour le concours TOP 10 des influenceurs SharePoint francophones ! Il est organisé par harmon.ie et accessible ici : http://harmon.ie/top-...
Cliquez pour lire la suite de l'article par Patrick Guimonet [CONF'SHAREPOINT] DERNIER RAPPEL ! :-)[CONF'SHAREPOINT] DERNIER RAPPEL ! :-) par Patrick Guimonet
La Conf'SharePoint en chiffres c'est : 3 jours de SharePoint ! 4 parcours et 60 sessions 17 partenaires représentant toutes les fac...
Cliquez pour lire la suite de l'article par Patrick Guimonet
Logiciels
Easy-Planning (4.5.0.11)EASY-PLANNING (4.5.0.11)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté a... Cliquez pour télécharger Easy-Planning CVEasy (3.1.0.51)CVEASY (3.1.0.51)PHMSD-CVEasy est un logiciel d'aide à la rédaction de CV d'une simplicité déconcertante.
PHMSD-C... Cliquez pour télécharger CVEasy LettresFaciles 2011 (8.6.0.31)LETTRESFACILES 2011 (8.6.0.31)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011 sDEVIS-FACTURES vlPRO (8.4.2.62)SDEVIS-FACTURES VLPRO (8.4.2.62)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO Devis-Factures PHMSD (2.1.0.11)DEVIS-FACTURES PHMSD (2.1.0.11)Configuration minimale
Nécessite Windows™ 2000, XP, Windows 7, 8, Vista (Service Pack à... Cliquez pour télécharger Devis-Factures PHMSD
|